rt,就很基础的广搜。
#include <bits/stdc++.h>
using namespace std;
int n,a,b,k[210],dis[210];
int bfs(){
queue<int> q;
memset(dis,-1,sizeof(dis));
q.push(a);
dis[a]=0;
while(q.size()){
int x=q.front();
q.pop();
if(x==b) return dis[x];
int nx=x+k[x];
if(nx<=n&&dis[nx]==-1){
q.push(nx);
dis[nx]=dis[x]+1;
}
nx=x-k[x];
if(nx>=1&&dis[nx]==-1){
q.push(nx);
dis[nx]=dis[x]+1;
}
}
return -1;
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++) cin>>k[i];
cout<<bfs();
return 0;
}