前7个点AC,后面WA
#include<iostream>
#include<cstdio>
#include<cmath>
#include<stack>
#include<queue>
#include<set>
#include<cstring>
#include<algorithm>
#define INF 0x7fffffff
#define ll long long
using namespace std;
int t,n,a,b,vis[100001],cnt,k[100001];
struct node{
int now,step;
};
queue<node>q;
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++) cin>>k[i];
vis[a]=1;
q.push((node){a,0});
while(!q.empty()){
if(cnt>100000){
cout<<-1;
return 0;
}
node n1=q.front();
q.pop();
if(n1.now==b){
cout<<n1.step<<endl;
return 0;
}
node n2;
if(n1.now+k[n1.now]<=100000&&!vis[n1.now+1]){
n2.now=n1.now+k[n1.now];
n2.step=n1.step+1;
q.push(n2);
vis[n1.now+k[n1.now]]=1;
}
if(n1.now-k[n1.now]>=1&&!vis[n1.now-1]){
n2.now=n1.now-k[n1.now];
n2.step=n1.step+1;
q.push(n2);
vis[n1.now-k[n1.now]]=1;
}
cnt++;
}
return 0;
}