社区讨论
50分求助,bfs不知道哪里出了问题,求助大佬!!
P1135奇怪的电梯参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo2p1jlc
- 此快照首次捕获于
- 2023/10/23 17:26 2 年前
- 此快照最后确认于
- 2023/10/23 17:26 2 年前
C
C#include<bits/stdc++.h>
using namespace std;
int N,A,B;
int K[205];
int sum[205];
void bfs(int x){
int temp=A;
queue <int>qq;
qq.push(temp);
while(!qq.empty()){
int head=qq.front();
qq.pop();
int d=sum[head];
//for(int i=1;i<=N;i++){
int u1=head+K[head];
int u2=head-K[head];
// cout<<u1<<" "<<u2<<endl;
if((u1<1||u1>N||sum[u1]!=-1)&&(u2<1||u2>N||sum[u2]!=-1))continue;
if(u1<1||u1>N||sum[u1]!=-1){
temp=u2;
sum[u2]=d+1;
// cout<<sum[u2]<<endl;
qq.push(temp);
}
if(u2<1||u2>N||sum[u2]!=-1){
temp=u1;
sum[u1]=d+1;
// cout<<sum[u1]<<endl;
qq.push(temp);
}
//}
}
}
int main(){
memset(sum,-1,sizeof(sum));
cin>>N>>A>>B;
for(int i=1;i<=N;i++){
cin>>K[i];
}
sum[A]=0;
bfs(A);
cout<<sum[B];
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...