记录编号 |
228030 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[HDU 1548] 奇怪的电梯 |
最终得分 |
100 |
用户昵称 |
Hzoi_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;
}