223732026-01-14 22:29:11lorantbHírlánccpp17Accepted 80/80156ms13732 KiB
#include <bits/stdc++.h>
using namespace std;

void dfs(int a, int dis, const vector<vector<int>> &g, vector<int> &dist) {
	dist[a] = dis;
	for(auto i : g[a]) {
		dfs(i, dis+1, g,dist);
	}
}

int main() {
	int n; cin >> n;
	vector<int> x(n+1);
	vector<vector<int>> g(n+1);
	vector<int> indeg(n+1);
	vector<bool> kor(n+1, true);
	vector<int> dist(n+1, 0);
	for(int i = 1; i <= n; i++) {
		int a; cin >> a;
		x[i] = a;
		g[a].push_back(i);
		indeg[a]++;
	}
	queue<int> q;
	for(int i = 1; i <= n; i++) {
		if(indeg[i] == 0) q.push(i);
	}
	while(q.size() != 0) {
		int w = q.front();
		q.pop();
		kor[w] = false;
		indeg[x[w]]--;
		if(indeg[x[w]] == 0) q.push(x[w]);
	}
	for(int i = 1; i <= n; i++) {
		if(kor[i] == true && dist[i] == 0) {
			int dis = 1;
			int z = x[i];
			while(z != i) {
				dis++;
				z = x[z];
			}
			dist[i] = dis;
			z = x[i];
			while(z != i) {
				dist[z] = dis;
				z = x[z];
			}
		}
	}
	for(int i = 1; i <= n; i++) {
		if(kor[i] == true) {
			for(auto j : g[i]) {
				if(kor[j] == false) {
					dfs(j, dist[i]+1,g,dist);
				}
			}
		}
	}
	int ans = 0;
	int ln = 0;
	for(int i = 1; i <= n; i++) {
		if(dist[i] > ln) {
			ln = dist[i];
			ans = i;
		}
	}
	cout << ans << " " << dist[ans];
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms500 KiB
subtask220/20
2Accepted2ms500 KiB
3Accepted2ms508 KiB
4Accepted2ms316 KiB
5Accepted2ms316 KiB
6Accepted2ms316 KiB
7Accepted2ms316 KiB
8Accepted2ms544 KiB
9Accepted2ms316 KiB
10Accepted2ms316 KiB
11Accepted2ms316 KiB
12Accepted2ms316 KiB
subtask318/18
13Accepted150ms13620 KiB
14Accepted149ms13620 KiB
15Accepted149ms13732 KiB
16Accepted118ms13616 KiB
17Accepted144ms13620 KiB
18Accepted126ms13624 KiB
19Accepted140ms13620 KiB
20Accepted125ms13556 KiB
21Accepted128ms13620 KiB
22Accepted115ms13656 KiB
subtask442/42
23Accepted1ms316 KiB
24Accepted2ms500 KiB
25Accepted2ms508 KiB
26Accepted2ms316 KiB
27Accepted2ms316 KiB
28Accepted2ms316 KiB
29Accepted2ms316 KiB
30Accepted2ms544 KiB
31Accepted2ms316 KiB
32Accepted2ms316 KiB
33Accepted2ms316 KiB
34Accepted2ms316 KiB
35Accepted150ms13620 KiB
36Accepted149ms13620 KiB
37Accepted149ms13732 KiB
38Accepted118ms13616 KiB
39Accepted144ms13620 KiB
40Accepted126ms13624 KiB
41Accepted140ms13620 KiB
42Accepted125ms13556 KiB
43Accepted128ms13620 KiB
44Accepted115ms13656 KiB
45Accepted146ms11820 KiB
46Accepted135ms11572 KiB
47Accepted136ms11576 KiB
48Accepted152ms11672 KiB
49Accepted152ms11572 KiB
50Accepted156ms11572 KiB
51Accepted136ms12148 KiB
52Accepted134ms12188 KiB
53Accepted130ms11572 KiB
54Accepted122ms11584 KiB