记录编号 228030 评测结果 AAAAAAAAAA
题目名称 [HDU 1548] 奇怪的电梯 最终得分 100
用户昵称 GravatarHzoi_Go灬Fire 是否通过 通过
代码语言 C++ 运行时间 0.084 s
提交时间 2016-02-19 06:25:26 内存使用 0.22 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
using namespace std;
const int maxn=250;
int n,a,b;
int k[maxn];
int step[maxn];
void Init();
void Bfs(int);
void Print();
int main()
{
	freopen("lift.in","r",stdin);
	freopen("lift.out","w",stdout);
    memset(k,0,sizeof(k));
    memset(step,-1,sizeof(step));
    Init();
    Bfs(a);
    Print();
    return 0;
}
void Init()
{
    cin>>n>>a>>b;
    for(int i=1;i<=n;i++)
    {
        cin>>k[i];
    }
}
void Bfs(int x)
{
    queue<int> lc;queue<int> bs;
    lc.push(x);bs.push(0);
    step[x]=0;
    while(!lc.empty())
    {
        int k2=lc.front();
        int xx=k2+k[k2],yy=k2-k[k2];
        int st=bs.front();
        if(xx>0&&xx<=n&&step[xx]==-1)
        {
            lc.push(xx);bs.push(st+1);
            step[xx]=st+1;
        }
        if(yy>0&&yy<=n&&step[yy]==-1)
        {
            lc.push(yy);bs.push(st+1);
            step[yy]=st+1;
        }
        lc.pop();bs.pop();
    }
}
void Print()
{
    cout<<step[b]<<endl;
}