54分bfs求调
查看原帖
54分bfs求调
1240039
SSSurFing楼主2024/8/6 15:59
#include <bits/stdc++.h>

using namespace std;

int n, a, b;
int c[200], jian[200];
bool dis[200];

int bfs() {
	memset(jian, -1, sizeof(jian));
	jian[a] = 0;
	queue<int >q;
	q.push({a});
	while (!q.empty()) {
		auto weizhi = q.front();
		q.pop();
		int s = weizhi + c[weizhi];
		if (s > 0 && s <= n && jian[s] == -1) {
			q.push({s});
			jian[s] = jian[weizhi] + 1;
			if (s == b) {
				return jian[b];
				break;
			}
		}
		int x = weizhi - c[weizhi];
		if (x > 0 && x <= n && jian[x] == -1) {
			q.push({x});
			jian[x] = jian[weizhi] + 1;
			if (x == b) {
				return jian[b];
				break;
			}
		}
	}
	return -1;

}

int main() {
	cin >> n >> a >> b;
	for (int i = 1; i <= n; i++)
		cin >> c[i];
	if (a != b)
		cout << bfs();
	else if (a == b)
		cout << "0";
}
2024/8/6 15:59
加载中...