#include <iostream>
using namespace std;
int n,a,b;
struct lift
{
int i,step;
}k[201];
int map[201];
int x,nx,s;
void bfs()
{
map[x]=1;
for(int i=1; i<=2; i++)
{
if(i==1)
{
nx=x+k[x].i;
}
else if(i==2)
{
nx=x-k[x].i;
}
if(nx>=1&&nx<=n&&map[nx]==0)
{
k[nx].step=k[x].step+1;
if(nx==b)
{
cout << k[nx].step;
s=1;
return;
}
x=nx;
bfs();
}
}
}
int main()
{
cin >> n >> a >> b;
for(int i=1; i<=n; i++)
{
cin >> k[i].i;
}
x=a;
k[a].step=0;
bfs();
if(!s)cout << -1;
return 0;
}
样例 1 2 3 4 5 7 14 15_WA_ 了