求助 ABC E
  • 板块学术版
  • 楼主Albert_Wei
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/4/1 21:43
  • 上次更新2023/10/23 19:43:03
查看原帖
求助 ABC E
676634
Albert_Wei楼主2023/4/1 21:43

rt

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

int n, a[200005];
int f[200005] = {0};
signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0); 
	cin >> n;
	for (int i = 1; i <= n; i++) cin >> a[i];
	for (int i = 1; i <= n; i++)
		if (f[i] == 0)
			for (int j = i; ; j = a[j]) {
				if (f[j] == 1) {
					for (int k = i; k != j; k = a[k]) f[k] = 2;
					f[j] = 3;
					for (int k = a[j]; k != j; k = a[k]) f[k] = 3;
					break;
				}
				if (f[j] != 0) break;
				f[j] = 1;
			}
	int ans = 0;
	for (int i = 1; i <= n; i++)
		if (f[i] == 3) ans++;
	cout << ans << endl;
	return 0;
}
2023/4/1 21:43
加载中...