MLE求调
查看原帖
MLE求调
794148
cyx20091026楼主2024/8/17 22:20
#include <bits/stdc++.h>
using namespace std;
int n,a,b,ans,flag;
int vis[10001];
int k[1001];
queue<pair<int,int> > q;
int f(){
	int d=q.front().first;//按钮次数 
	int floor=q.front().second;//floor为当前楼层 
	if(floor==b) return 1;
	q.pop();
	for(int i=-1;i<=1;i+=2){
		int now=floor+k[floor]*i;
		if(now>=1&&now<=n&&vis[now]==0){
			q.push(make_pair(d+1,now));
		}
	}
	return 0;
}
int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++){
		cin>>k[i];
	}
	q.push(make_pair(0,a));
	vis[a]=-1;
	while(!q.empty()){
		if(f()){
			cout<<q.front().first;
			return 0;
		}
	}
	cout<<-1;
	return 0;
}


2024/8/17 22:20
加载中...