求助!!!8,9测试点WA!!!
查看原帖
求助!!!8,9测试点WA!!!
593595
_Aurore_楼主2022/3/19 14:58
#include<bits/stdc++.h>
using namespace std;
 long long  f[14514],ff[14514],fff[70888];
 long long  head=0,tail=1;//模拟队列初始化 
 int  main(){
	 long long  floor,first_f,last_f;
	cin>>floor>>first_f>>last_f;
	if(first_f==last_f){
		cout<<0;
		return 0;
	}
	for( long long  i=1;i<=floor;i++){
		cin>>f[i];
		fff[i]=-1;//每一层都没有使用 
	}
	fff[first_f]=0;//当前层数出始化为0 
	ff[1]=first_f;//队列位置 
	//初始化待定
	while(head<tail){
		head++;//队列头增加 
		long long  go=fff[ff[head]]+1;//当前步数加1 
		long long  up_floor=f[ff[head]]+ff[head];//电梯上行的层数 
		long long  under_floor=ff[head]-f[ff[head]];//电梯下行层数 
		if(up_floor>=1&&up_floor<=floor&&fff[up_floor]==-1){
			tail++;//满足条件,尾巴增长
			ff[tail]=up_floor;
			fff[ff[tail]]=go;
			if(ff[tail]==last_f){
				cout<<go;
				return 0;
			}
		}
		else if(under_floor>=1&&under_floor<=floor&&fff[under_floor]==-1){
			tail++;
			ff[tail]=under_floor;
			fff[ff[tail]]=go;
			if(ff[tail]==last_f){
				cout<<go;
				return 0;
			}
		}
	} 
	cout<<-1;
	return 0;
}
2022/3/19 14:58
加载中...