#include<bits/stdc++.h>
using namespace std;
struct queue
{
int num;
int hi;
int step;
}que[160005];
int h[100];
int c[3]={1,-1};
bool check [450];
int main(){
int n,a,b;
cin>>n>>a>>b;
for(int i=1;i<=n;i++)
{cin>>h[i];
}
if(a==b) {
cout<<0;return 0;
}
int hd=0,tl=1;
que[1].hi=a;
que[1].num=h[a];
que[1].step=0;
check[a]=1;
while(hd!=tl)
{ hd++;
for(int i=0;i<2;i++)
{int nh=que[hd].hi+c[i]*que[hd].num;
if(nh>0&&nh<=n&&!check[nh])
{ tl++;
que[tl].hi=nh;
que[tl].step=que[hd].step+1;
que[tl].num=h[que[tl].hi];
check[que[tl].hi]=1;
if(que[tl].hi==b)
{cout<<que[tl].step;return 0;}
}
}
}
if(hd==tl) cout<<-1;
return 0;
}
求指正!!!
感谢!