- 题解
333333333333333333333
- 2025-7-22 15:29:42 @
using namespace std;
struct node{
int x,step;
};
queue<node>q;
int vis[201];
int n,a,b;
int k[201];
void bfs(){
node na={a,0};
vis[a]=1;
q.push(na);
while(!q.empty()){
node f=q.front();
if(f.x==b){
cout<<f.step;
return;
}
int n1=f.x+k[f.x];
if(n1>0&&n1<=n&&vis[n1]==0){
node r1={n1,f.step+1};
q.push(r1);
}
int n2=f.xk[f.x];
if(n2>0&&n2<=n&&vis[n2]==0){
node r2={n2,f.step+1};
q.push(r2);
}
q.pop();
}
cout << -1;
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++){
cin>>k[i];
}
bfs();
return 0;
}
0 条评论
目前还没有评论...