#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
int n,a[220],A,B,v[210];
struct node
{
int re,step;
}cur,next;
void bfs(int t)
{
cur.re=t;cur.step=0;
queue<node>q;
q.push(cur);
while(!q.empty())
{
cur=q.front();
q.pop();
if(cur.re==B)
{
printf("%d\n",cur.step);
return ;
}
if(cur.re+a[cur.re]<=n&&!v[cur.re+a[cur.re]])
{
next.re=cur.re+a[cur.re];
next.step=cur.step+1;
v[cur.re+a[cur.re]]=1;
q.push(next);
}
if(cur.re-a[cur.re]>0&&!v[cur.re-a[cur.re]])
{
next.re=cur.re-a[cur.re];
next.step=cur.step+1;
v[cur.re-a[cur.re]]=1;
q.push(next);
}
}
printf("-1\n");
}
int main()
{
int i;
while(scanf("%d",&n),n)
{
memset(v,0,sizeof(v));
scanf("%d%d",&A,&B);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
v[A]=1;
bfs(A);
}
return 0;
}
hdu 1548(bfs)
最新推荐文章于 2017-08-29 07:48:29 发布