216442026-01-13 17:42:19algoproHírlánccpp17Accepted 80/80155ms13736 KiB
// UUID: 03cf9dac-c750-43a8-aa29-05b59e81aa3f
#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
1Accepted1ms560 KiB
subtask220/20
2Accepted2ms316 KiB
3Accepted2ms512 KiB
4Accepted2ms316 KiB
5Accepted2ms316 KiB
6Accepted2ms316 KiB
7Accepted2ms316 KiB
8Accepted2ms316 KiB
9Accepted2ms316 KiB
10Accepted2ms552 KiB
11Accepted2ms316 KiB
12Accepted2ms496 KiB
subtask318/18
13Accepted125ms13712 KiB
14Accepted143ms13736 KiB
15Accepted126ms13560 KiB
16Accepted144ms13528 KiB
17Accepted125ms13696 KiB
18Accepted145ms13616 KiB
19Accepted141ms13632 KiB
20Accepted125ms13604 KiB
21Accepted122ms13508 KiB
22Accepted127ms13532 KiB
subtask442/42
23Accepted1ms508 KiB
24Accepted2ms316 KiB
25Accepted2ms512 KiB
26Accepted2ms316 KiB
27Accepted2ms316 KiB
28Accepted2ms316 KiB
29Accepted2ms316 KiB
30Accepted2ms316 KiB
31Accepted2ms316 KiB
32Accepted2ms552 KiB
33Accepted2ms316 KiB
34Accepted2ms496 KiB
35Accepted125ms13712 KiB
36Accepted143ms13736 KiB
37Accepted126ms13560 KiB
38Accepted144ms13528 KiB
39Accepted125ms13696 KiB
40Accepted145ms13616 KiB
41Accepted141ms13632 KiB
42Accepted125ms13604 KiB
43Accepted122ms13508 KiB
44Accepted127ms13532 KiB
45Accepted152ms11820 KiB
46Accepted155ms11568 KiB
47Accepted133ms11572 KiB
48Accepted133ms11528 KiB
49Accepted152ms11572 KiB
50Accepted134ms11596 KiB
51Accepted135ms12084 KiB
52Accepted155ms12288 KiB
53Accepted131ms11744 KiB
54Accepted125ms11708 KiB