记录编号 165278 评测结果 AAAAAAAAAA
题目名称 [HDU 1548] 奇怪的电梯 最终得分 100
用户昵称 Gravatarforever 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2015-06-10 20:24:12 内存使用 0.32 MiB
显示代码纯文本
#include<iostream>
#include<cstdlib>
#include<queue>
#include<cstdio>
using namespace std;
int n,a,b;
int ceng[201],s[3],g[201];
int main()
{   freopen("lift.in","r",stdin);
	freopen("lift.out","w",stdout);
	queue<int>deng;
    queue<int>step;
	cin>>n>>a>>b;
	for(int i=1;i<=n;++i)
	  cin>>ceng[i];
	if(a==b)
	  {
			cout<<0;
			exit(0);
	  }
	if(ceng[a]==0)
    {
		cout<<-1;
		exit(0);
    }
	deng.push(a);
	step.push(1);
	g[a]=1;
	while(!deng.empty())
	 {
		s[1]=ceng[deng.front()];
        s[2]=-ceng[deng.front()];
		for(int i=1;i<=2;++i)
		  {
				int aa=deng.front()+s[i];
				if(aa>0&&g[aa]==0&&aa<=b)
				  {     if(aa!=b)
						 {
							deng.push(aa);
							int tt=step.front()+1;
						    step.push(tt);
						    g[aa]=1;
						    continue;
					     }
					    if(aa==b)
						  {
								cout<<step.front();
								exit(0);
						  }
				   }
		   }
		  deng.pop();
		  step.pop();
	 }
	 cout<<-1;
	 //system("pause");
	 return 0;
}