题解
2024-04-03 22:51:28
发布于:浙江
4阅读
0回复
0点赞
#include<iostream>
#include<queue>
using namespace std;
int n,x,y,arr[210],vis[210];
struct node{
int x;
int step;
};
queue<node> q;
int main(){
cin>>n>>x>>y;
for(int i=1;i<=n;i++) cin>>arr[i];
q.push({x,0});
while(!q.empty()){
node t=q.front();
q.pop();
vis[t.x]=1;
if(t.x==y){cout<<t.step;return 0;}
int nx=t.x+arr[t.x];
if(nx>=1&&nx<=n&&vis[nx]==0){q.push({nx,t.step+1});}
nx=t.x-arr[t.x];
if(nx>=1&&nx<=n&&vis[nx]==0){q.push({nx,t.step+1});}
}
cout<<-1;
return 0;
}
这里空空如也
有帮助,赞一个