30分,MLE,求调!
查看原帖
30分,MLE,求调!
1149612
gfy_uuxt_wuli_楼主2024/7/28 17:29
#include<bits/stdc++.h>
#include<queue>
using namespace std;
#define maxn 202
int n,a,b;
int k[maxn];
int drt[3]={0,1,-1};
bool have=false;
struct node{
	int floor;
	int time_;
}abc;
queue<node> q;
node u,d;
int main(){
	scanf("%d%d%d",&n,&a,&b);
	for (int i=1;i<=n;i++) cin>>k[i];
	abc.floor=a;
	abc.time_=0;
	q.push(abc);
	while (!q.empty()){
		u=q.front();
		q.pop();
		if (u.floor==b){
			have=true;
			break;
		}
		for (int i=1;i<=2;i++){
			if (u.floor+k[u.floor]*drt[i]<1||u.floor+k[u.floor]*drt[i]>n) continue;
			d.floor=u.floor+k[u.floor]*drt[i];
			d.time_=u.time_+1;
			q.push(d);
		}
	}
	if (!have){
		cout<<-1;
		return 0;
	}
	cout<<u.time_;
	return 0;
}
2024/7/28 17:29
加载中...