64求救
查看原帖
64求救
930739
Chang__An__Li楼主2024/10/5 16:16
#include<bits/stdc++.h>
using namespace std;
int n,a,b;
int k[210];
bool vis[210];
struct NODE{
	int x,ans;
};
void solve(int sx,int ex) {
	queue<NODE>q;
	q.push({sx,0});
	vis[sx]=1;
	while(!q.empty()){
		NODE p=q.front();
		if(p.x==ex){
			printf("%d",p.ans);
			return ;
		}
		vis[p.x]=1;
		if(p.x+k[p.x]<=n&&vis[p.x+k[p.x]]==0){
			q.push({p.x+k[p.x],p.ans+1});
			vis[p.x]=1;
		}
		if(p.x-k[p.x]>=1&&vis[p.x-k[p.x]]==0){
			q.push({p.x-k[p.x],p.ans+1});
			vis[p.x]=1;
		}
		q.pop();
	}
	printf("-1");
	return ;
}



int main() {
	scanf("%d%d%d",&n,&a,&b);
	for(int i=1;i<=n;i++){
		scanf("%d",&k[i]) ;
	}
	solve(a,b);
	return 0;
}

前几个点MLE,时间也都是几百毫秒,很不正常.

2024/10/5 16:16
加载中...