标签:
#include<iostream>
#include<queue>
using namespace std;
int n,a,b;
int map[205],vis[205];
void bfs(int s,int e)
{
queue<int> q;
q.push(s);
vis[s]=1;//标记
int t;//用于保存首元素
while(!q.empty())
{
t=q.front();//获取第一个元素
q.pop();//将第一个元素弹出,首元素变成第二个
if(t==e)
break;//若是满足条件则跳出
int next=t+map[t];//向上走
if(next>=1 && next<=b && vis[next]==0)
{
q.push(next);
vis[next]=vis[t]+1;
}
next=t-map[t];//向下走
if(next>=1 && next<=b && vis[next]==0)
{
q.push(next);
vis[next]=vis[t]+1;
}
}
if(t!=e)
vis[b]=0;
}
int main()
{
while(cin>>n && n)
{
cin>>a>>b;
for(int i=1;i<=n;i++)
cin>>map[i];
memset(vis,0,sizeof(vis));
bfs(a,b);
cout<<vis[b]-1<<endl;
}
return 0;
}
标签:
原文地址:http://www.cnblogs.com/lmqpt/p/4689845.html