HDU-1548-A strange lift
http://acm.hdu.edu.cn/showproblem.php?pid=1548
基本的BFS,上下两个方向搜索
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<queue>
using namespace std;
int n;
int visit[205];
int num[205];
struct node
{
int x;
int step;
};
int go(int x)
{
if(1<=x&&x<=n)
return 1;
return 0;
}
int bfs(int a,int b)
{
queue<node>q;
node st,ed;
int t;
st.x=a;
st.step=0;
q.push(st);
memset(visit,0,sizeof(visit));
visit[st.x]=1;
while(!q.empty())
{
st=q.front();
q.pop();
if(st.x==b)
return st.step;
t=st.x+num[st.x];
if(go(t)&&!visit[t])
{
visit[t]=1;
ed.x=t;
ed.step=st.step+1;
q.push(ed);
}
t=st.x-num[st.x];
if(go(t)&&!visit[t])
{
visit[t]=1;
ed.x=t;
ed.step=st.step+1;
q.push(ed);
}
}
return -1;
}
int main()
{
int i,ans;
int a,b;
while(scanf("%d",&n),n)
{
scanf("%d%d",&a,&b);
for(i=1;i<=n;i++)
scanf("%d",&num[i]);
if(a==b)
{
printf("0\n");
continue;
}
ans=bfs(a,b);
printf("%d\n",ans);
}
return 0;
}
分享到:
相关推荐
hdu-acm源代码(上百题)hdu-acm源代码、hdu-acm源代码hdu-acm源代码
算法-数塔(HDU-2084).rar
算术(HDU-6715).rar
算法-确定比赛名次(HDU-1285).rar
最短路(HDU-2544).rar
算法-命运(HDU-2571)(包含源程序).rar
算法-连连看(HDU-1175)(包含源程序).rar
算法-欧拉回路(HDU-1878)(包含源程序).rar
算法-排列组合(HDU-1521)(包含源程序).rar
算法-六度分离(HDU-1869)(包含源程序).rar
算法-迷宫城堡(HDU-1269)(包含源程序).rar
算法-免费馅饼(HDU-1176)(包含源程序).rar