站外题60分求调,悬关
  • 板块学术版
  • 楼主A_W_Lee
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/10/22 16:28
  • 上次更新2024/10/22 18:57:56
查看原帖
站外题60分求调,悬关
1271613
A_W_Lee楼主2024/10/22 16:28

原题在这
我的代码:

#include <bits/stdc++.h>
#define int long long
//#define xyyissolvy 1
using namespace std;
const int MAXN = 205;
int xyyissolvy = 1;

int n, a, b, xyy[MAXN], ans, ways[5] = {xyyissolvy, -xyyissolvy};
bool lvy[MAXN];

struct lft {
	int id, step;
};
queue<lft>q;

void bfs() {
	if (a == b) {
		ans = 0;
		return ;
	}

	q.push(lft{a, 0});
	lvy[a] = xyyissolvy;

	while (!q.empty()) {
		int id = q.front().id, step = q.front().step;
		q.pop();

		for (int i = 0; i < 2; i++) {

			int nid = id + xyy[id] * ways[i];

			if (nid<xyyissolvy || nid>n)
				continue;

			if (lvy[nid])
				continue;
			lvy[nid] = xyyissolvy;
			q.push(lft{nid, step + xyyissolvy});

			if (nid == b) {
				ans = step + xyyissolvy;
				return ;
			}
		}
	}
}

signed main() {
	cin >> n >> a >> b;

	for (int i =xyyissolvy ; i <= n; i++) {

		cin >> xyy[i];
	}

	bfs();
	cout << ans << '\n';


	return 0;
}

救救孩子!

2024/10/22 16:28
加载中...