dfs求助为什么WA了?
查看原帖
dfs求助为什么WA了?
1178898
OJ_killer楼主2025/1/24 11:35

样例手动测试都对不知道为什么WA了

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

int n, u, v, a[200100], tmp[200100], ans[200100], len;
bool vis[200100];
vector<int> G[200100];

inline void dfs(int x) {
	vis[x] = true;
	for (auto i : G[x]) {
		if (!vis[i]) {
			tmp[i] = x;
			dfs(i);
		} else {
			tmp[i] = x;
			u = i;
			v = u;
			return;
		}
	}
}

int main() {
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
		G[i].push_back(a[i]);
	}
	for (int i = 1; i <= n; i++) {
		dfs(i);
		while (tmp[u] != v) {
			ans[++len] = u;
			u = tmp[u];
		}
		ans[++len] = u;
		cout << len << endl;
		for (int i = 1; i <= len; i++)
			cout << ans[i] << " ";
		cout << endl;
		break;
	}
	return 0;
}
2025/1/24 11:35
加载中...