70分求调
查看原帖
70分求调
1442599
R_K_C_Sep_30楼主2025/7/31 16:02
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define N 500000
int b, n, a;
int k[N];
bool v[N] = {false};
signed main(){
	std::ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin >> b >> n >> a;
	for (int i = 1; i <= b; i++) {
		cin >> k[i];
	}	
	queue<int> qf;
	queue<int> qs;
	qf.push(n);
	qs.push(0);
	v[n] = true;
	int r = 0;
	while (!qf.empty()) {
		int f = qf.front();
		int s = qs.front();
		qf.pop();
		qs.pop();
		if (f == a) {
			r = s;
			break;
		}	
		int u = f + k[f];
		if (u <= b && !v[u]) {
			v[u] = true;
			qf.push(u);
			qs.push(s + 1);
		}	
		int d = f - k[f];
		if (d >= 1 && !v[d]) {
			v[d] = true;
			qf.push(d);
			qs.push(s + 1);
		}
	}
	cout << r;
	return 0;
}
2025/7/31 16:02
加载中...