记录编号 131256 评测结果 AAAAAAAAAA
题目名称 [HDU 1548] 奇怪的电梯 最终得分 100
用户昵称 Gravatar乌龙猹 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2014-10-24 08:16:54 内存使用 0.32 MiB
显示代码纯文本
#include<queue>
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
void work();
queue <int> x,y;
int n,a,b;
int dx[201];
int q[5];
int p[201];
int main()
{
	freopen("lift.in","r",stdin);
	freopen("lift.out","w",stdout);
	ios::sync_with_stdio(false);
    cin>>n>>a>>b;
    for(int i=1;i<=n;i++) cin>>p[i];
       if(a==b) 
	   {
	     cout<<"0"; 
	     return 0;
	   }
    memset(dx,0xff,sizeof(dx));
    work();
    return 0;
}
void work()
{
	dx[a]=0;
    x.push(a);
    y.push(0);
    while(!x.empty())
    {
        int y3=x.front()-p[x.front()],x3=x.front()+p[x.front()];
        if(x3<=n&&x3>0&&dx[x3]==-1)
            {
                    dx[x3]=y.front()+1;
                    x.push(x3);
                    y.push(dx[x3]);
            }
                if(y3<=n&&y3>0&&dx[y3]==-1)
            {
                    dx[y3]=y.front()+1;
                    x.push(y3);
                    y.push(dx[y3]);        
            }

                x.pop();
                y.pop();
    }
     if(dx[b]>0) cout<<dx[b];
     else   cout<<-1;
}