社区讨论
80分BFS求助, 第九、十个测试点没过
P1135奇怪的电梯参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo7f6f3j
- 此快照首次捕获于
- 2023/10/27 00:49 2 年前
- 此快照最后确认于
- 2023/10/27 00:49 2 年前
大佬们救救!!!SOS
CPP#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int n,a,b;//楼梯层数,开始 结束
int k[205];//每层楼梯可走的地方
bool vis[205];
int cnt;
// int d[205];
void bfs();
int main(){
scanf("%d %d %d",&n,&a,&b);
for(int i=1;i<=n;i++) scanf("%d",&k[i]);
memset(vis,false,sizeof(vis));
// d[stx] = 0;
bfs();
return 0;
}
void bfs(){
queue<int>que;
int nx = a;
int nnx;
que.push(nx);
while(!que.empty()){
nx = que.front();
que.pop();
if(nx == b) break;
if(nx+k[nx] <= n && !vis[nx+k[nx]]){
nnx = nx+k[nx];
vis[nnx] = true;
que.push(nnx);
cnt++;
}else if(nx-k[nx] >=1&& !vis[nx-k[nx]]){
nnx = nx-k[nx];
vis[nnx] = true;
que.push(nnx);
cnt++;
}
}
if(nx==b) cout << cnt;
else cout << -1 ;
return;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...