#include<bits/stdc++.h>
using namespace std;
int n,a,b;
int k[210];
bool vis[210];
struct NODE{
int x,ans;
};
void solve(int sx,int ex) {
queue<NODE>q;
q.push({sx,0});
vis[sx]=1;
while(!q.empty()){
NODE p=q.front();
if(p.x==ex){
printf("%d",p.ans);
return ;
}
vis[p.x]=1;
if(p.x+k[p.x]<=n&&vis[p.x+k[p.x]]==0){
q.push({p.x+k[p.x],p.ans+1});
vis[p.x]=1;
}
if(p.x-k[p.x]>=1&&vis[p.x-k[p.x]]==0){
q.push({p.x-k[p.x],p.ans+1});
vis[p.x]=1;
}
q.pop();
}
printf("-1");
return ;
}
int main() {
scanf("%d%d%d",&n,&a,&b);
for(int i=1;i<=n;i++){
scanf("%d",&k[i]) ;
}
solve(a,b);
return 0;
}
前几个点MLE,时间也都是几百毫秒,很不正常.