#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
using namespace std;
int a[300];
int visit[300];
int N,A,B,sum;
struct stu
{
int step;
int num;
};
int BFS()
{
queue<stu>p;
stu x,y;
x.step=0;
x.num=A;
p.push(x);
visit[x.num]=1;
while(!(p.empty()))
{
x=p.front();
p.pop();
if(x.num==B)return x.step;
y.num=x.num+a[x.num];
y.step=x.step+1;
if(y.num>=1&&y.num<=N&&visit[y.num]==0)
{
visit[y.num]=1;
p.push(y);
}
y.num=x.num-a[x.num];
y.step=x.step+1;
if(y.num>=1&&y.num<=N&&visit[y.num]==0)
{
visit[y.num]=1;
p.push(y);
}
}
return -1;
}
using namespace std;
int main()
{
int i,sum;
while(~scanf("%d",&N)&&N)
{
sum=0;
memset(visit,0,sizeof(visit));
scanf("%d%d",&A,&B);
for(i=1;i<=N;i++)
scanf("%d",&a[i]);
sum=BFS();
printf("%d\n",sum);
}
return 0;
}
杭电1548
最新推荐文章于 2018-08-08 09:12:27 发布