题解BFS
2025-07-14 00:36:44
发布于:新疆
1阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int a[205];
int d[205];
int n,m,k;
int main(){
cin>>k>>n>>m;
for(int i=1;i<=k;i++){
cin>>a[i];
d[i]=-1;
}
d[n]=0;
queue <int> que;
que.push(n);
bool op=1;
while(que.size()){
int r=que.front();
que.pop();
if(r==m){
op=0;
cout<<d[r];
break;
}
if(r>=a[r]+1&&d[r-a[r]]==-1){
d[r-a[r]]=d[r]+1;
que.push(r-a[r]);
}
if(r<=200-a[r]&&d[r+a[r]]==-1){
d[r+a[r]]=d[r]+1;
que.push(r+a[r]);
}
}
if(op){
cout<<-1;
}
return 0;
}
这里空空如也
有帮助,赞一个