(我是怎么也想不明白为什么WA的是前五个点QAQ)
#include<bits/stdc++.h>
#include<queue>
using namespace std;
int K[201];
int level[201];
int main(){
int N,A,B;
int x,y,p;
cin>>N>>A>>B;
for(int i=1; i<=N; i++) cin>>K[i];
level[A]=1;
queue <int> Q;
Q.push(A);
while(!Q.empty()){
p=Q.front();
x=Q.front()+K[Q.front()];
y=Q.front()-K[Q.front()];
if(x==y) break;
Q.pop();
if(1<=x&&x<=N){
if(!level[x]||(level[p]+1<level[x])){
level[x]=level[p]+1;
Q.push(x);
}
}
if(1<=y&&y<=N){
if(!level[y]||(level[p]+1<level[y])){
level[y]=level[p]+1;
Q.push(y);
}
}
}
cout<<level[B]-1;
return 0;
}