记录编号 559239 评测结果 AAAAAAAAAA
题目名称 [HDU 1548] 奇怪的电梯 最终得分 100
用户昵称 Gravatar城南花已开 是否通过 通过
代码语言 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;
}