【Hdu】1548 A strange lift

原创 2015年07月08日 14:39:20
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;

const int N=201;

struct G
{
	int v,nxt;
}map[N<<1];
int tt,hd[N];
int n,s,t,k[N];
int q[N],qh,qt,v[N],d[N];

inline int read(void)
{
	int x=0,f=1; char c=getchar();
	for (;c<'0'||c>'9';c=getchar()) if (c=='-') f=-1;
	for (;'0'<=c&&c<='9';c=getchar()) x=(x<<1)+(x<<3)+c-'0';
	return x*f;
}

inline int check(int i)
{
	return 1<=i&&i<=n;
}

inline void ins(int u,int v)
{
	map[++tt].v=v;
	map[tt].nxt=hd[u];
	hd[u]=tt;
}

int main(void)
{	
	for (int cc=1;cc;cc++)
	{
		memset(hd,0,sizeof hd); tt=0;
		qh=0,qt=1; memset(v,0,sizeof v);
		memset(d,0,sizeof d);
		
		n=read();
		if (!n) break;
		s=read(),t=read();
		for (int i=1;i<=n;i++) k[i]=read();
	
		for (int i=1;i<=n;i++)
		{
			if (check(i-k[i])) ins(i,i-k[i]);
			if (check(i+k[i])) ins(i,i+k[i]);
		}
	
		if (s==t)
		{
			printf("0\n");
			continue;
		}
	
		int k;
		v[s]=1,q[qt=1]=s,d[t]=-1;
		for (;qh^qt;)
		{
			k=q[++qh];
			for (int r=hd[k];r;r=map[r].nxt)
				if (!v[map[r].v])
				{
					d[map[r].v]=d[k]+1;
					q[++qt]=map[r].v;
					v[map[r].v]=1;
				}
		}
		printf("%d\n",d[t]);
	}
	
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

HDU 1548 A strange lift

There is a strange lift.The lift can stop can at every floor as you want, and there is a number Ki(0...

HDU 1548 A strange lift 简单广搜

A strange lift Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...

hdu 1548 A strange lift(BFS)

原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=1548 题目大意: N个数从A层开始到B层 N层依次能上升或者下降的层数 ...

ACM-BFS之A strange lift——hdu1548

ACM BFS A strange lift hdu1548

HDU 1548 A strange lift【不错的最短路,spfa】

n代表楼梯层数,A代表起始位置,B代表终止位置,接下来有n个数,代表到达每一层后,可以选择按 按钮“UP”,“DOWN” ,代表执行此操作后电梯可上升或下降的层数(注意:是变化的层数,且合法...

杭电 hdu 1548 A strange lift

/* THE PROGRAM IS MADE BY PYY */ /*-----------------------------------------------------------------...

HDU 1548 A strange lift(简单BFS)

http://acm.hdu.edu.cn/showproblem.php?pid=1548 A strange liftTime Limit: 2000/1000 MS (Java/Others)...

hdu1548A strange lift——最短路(迪杰斯特拉,spfa)。bfs(队列。数组)

Dijkstra+spfa+数组模拟队列+bfs,

HDU/HDOJ 1548 A strange lift BFS,DFS

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1548 我用两种方法做,DFS没有AC,不知道错在哪里,贴出来有大神撸过不吝赐教,第二种经典方...

hdu 1548 A strange lift(bfs)

A strange lift Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)