hdu 1548 A strange lift
//是pku3278 Catch That Cowr的翻版
#include <stdio.h>
#include <string.h>
#define MAXSIZE 210
int N,A,B,number[MAXSIZE],queue[MAXSIZE],step[MAXSIZE],front,rear;
void bfs()
{
while(front<rear)
{
int next,f=queue[++front];
if(f==B)
{
printf("%d\n",step[f]);
return;
}
next=f+number[f];
if(next <= N && !step[next])
{
queue[++rear]=next;
step[next]=step[f]+1;
}
next=f-number[f];
if(next>0 && !step[next])
{
queue[++rear]=next;
step[next]=step[f]+1;
}
}
printf("-1\n");
}
int main()
{
while(scanf("%d",&N),N)
{
scanf("%d%d",&A,&B);
for(int i=1; i<=N; i++) scanf("%d",&number[i]);
memset(step,0,sizeof(step));
front=rear=-1;
queue[++rear]=A;
bfs();
}
return 0;
}
浙公网安备 33010602011771号