记录编号 |
559239 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[HDU 1548] 奇怪的电梯 |
最终得分 |
100 |
用户昵称 |
城南花已开 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.000 s |
提交时间 |
2021-02-22 00:26:36 |
内存使用 |
0.00 MiB |
显示代码纯文本
# include <iostream>
# include <cstdio>
using namespace std;
int n,a,b,floor1[205][2],i,sum[233333],j,head,tail,floor3[233333],k;
bool floor2[205],sign=false;
int bfs(int x){
head=0;
tail=1;
floor2[x]=false;
floor3[1]=x;
sum[head]=0;
do{
head++;
if(floor3[head]==b){
return sum[tail];
}
for(j=1;j<=2;j++){
k=floor3[head]+floor1[floor3[head]][j];
if(k>=1&&k<=n){
if(floor2[k]==true){
tail++;
floor2[k]=false;
sum[tail]=sum[head]+1;
floor3[tail]=k;
}
}
}
}while(head<tail);
if(sign==false){
return -1;
}
}
int main(){
freopen("lift.in","r",stdin);
freopen("lift.out","w",stdout);
cin >>n>>a>>b;
for(i=1;i<=n;i++){
cin >>floor1[i][1];
floor1[i][2]=0-floor1[i][1];
}
for(i=1;i<=n;i++){
floor2[i]=true;
}
cout <<bfs(a);
fclose(stdin);
fclose(stdout);
return 0;
}