超时求调
查看原帖
超时求调
1121617
Liugehetao楼主2025/1/18 11:29
#include<bits/stdc++.h>
using namespace std;
int n,a,b;
struct no{
	int num,id,st;
}k[1005];
bool d[1005];
queue<no> Q;
int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++){
		scanf("%d",&k[i].num);
		k[i].id=i;
	}
	no t;
	t.id=a;t.num=k[a].num;t.st=0;
	Q.push(t);
	while(!Q.empty()){
		no u=Q.front();
		if(u.id==b){
			printf("%d",u.st);
			break;
		}
		else {
			if(u.id+u.num<=n&&u.id+u.num>=1){
				t.id=u.id+u.num;
				t.st=u.st+1;
				t.num=k[t.id].num;
				Q.push(t);
			}
			if(u.id-u.num<=n&&u.id-u.num>=1){
				t.id=u.id-u.num;
				t.st=u.st+1;
				t.num=k[t.id].num;
				Q.push(t);
			}
		}
		Q.pop();
	}
	if(Q.empty()) printf("%d",-1);
	return 0;
}
2025/1/18 11:29
加载中...