30求助
查看原帖
30求助
1186619
_HLB_楼主2024/10/6 10:41

代码

#include<bits/stdc++.h>
using namespace std;

int M[201];
int n, a, b;
int k[201];
queue<int> q;

int main(){
	freopen("in.txt", "r", stdin);
	cin >> n >> a >> b;
	for(int i=1; i<=n; i++) cin >> k[i];
	memset(M, -1, sizeof(M));
	M[a] = 0;

	if(a==b){
		cout << 0 << endl;
		return 0;
	}

	q.push(a);
	while(!q.empty()){
		int p = q.front();
		q.pop();
		if(p==b) break;
		if(M[p]!=-1) continue;
		if(p+k[p]<=n) {
			M[p+k[p]] = M[p]+1;
			q.push(p+k[p]);
		}
		if(p-k[p]>=1) {
			M[p-k[p]] = M[p]+1;
			q.push(p-k[p]);
		}
	}

	cout << M[b] << endl;

	return 0;
}

测试点

2024/10/6 10:41
加载中...