标签:
5 1 5 3 3 1 2 5 0
3
#include <iostream>
#include <stdio.h>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#define N 2020
using namespace std;
int A,B,n;
int s[N];
int mp[N];
struct Node
{
int a,b;
}f,t,g;
int main()
{
while(~scanf("%d",&n))
{
if(n==0) break;
scanf("%d %d",&A,&B);
for(int i=1;i<=n;i++)
{
scanf("%d",&s[i]);
mp[i]=0;
}
queue<Node>q;
mp[A]=1;
f.a=A;
f.b=0;
q.push(f);
int ans=-1;
while(!q.empty())
{
t=q.front();
q.pop();
if(t.a==B)
{
ans=t.b;
break;
}
f.a=t.a+s[t.a];
g.a=t.a-s[t.a];
if(f.a>0 && f.a<=n && mp[f.a]==0)
{
mp[f.a]=1;
f.b=t.b+1;
q.push(f);
}
if(g.a>0 && g.a<=n && mp[g.a]==0)
{
mp[g.a]=1;
g.b=t.b+1;
q.push(g);
}
}
if(ans==-1)
cout<<-1<<endl;
else
cout<<ans<<endl;
}
return 0;
}
标签:
原文地址:http://blog.csdn.net/wust_zjx/article/details/45749057