代码如下
#include<bits/stdc++.h>
using namespace std;
queue<int>q;
int k[201],vis[201];
int n,a,b,ans,coun=0;
int main(){
scanf("%d%d%d",&n,&a,&b);
if(a==b){
cout<<0;
return 0;
}
for(int i=1;i<=n;i++){
scanf("%d",&k[i]);
}
vis[a]=1;
q.push(a);
while(!q.empty()){
int x=q.front();
if(x==b){
printf("%d",ans);
return 0;
}
vis[x]=1;
q.pop();
int kx=x+k[x],ky=x-k[x];
if(vis[kx]==0&&kx<=n&&kx>0){
q.push(kx);
vis[kx]=1;
}
if(vis[ky]==0&&ky>0&&ky<=n){
q.push(ky);
vis[ky]=1;
}
ans++;
}
cout<<-1;
return 0;
}