217622026-01-13 19:38:42algoproHírlánccpp17Accepted 80/8082ms3924 KiB
// UUID: f498104c-176d-4ad3-9130-fd739898d707
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;

vector<int> c;
vector<int> eler;
vector<int> volt;
int bejid = 1;

void bejar(int kezd) {
	int id = bejid++;
	vector<int> erintett;
	int u = kezd;

	while (true) {
		volt[u] = id;
		erintett.push_back(u);

		int kov = c[u];

		if (volt[kov] == id) {
			int hossz = 1;
			for (int i = (int)erintett.size() - 1; erintett[i] != kov; i--) hossz++;

			bool korben = false;
			for (int x : erintett) {
				if (x == kov) korben = true;
				if (korben) eler[x] = hossz;
			}

			for (int i = (int)erintett.size() - 1; i >= 0; i--) {
				int x = erintett[i];
				if (eler[x]) continue;
				eler[x] = eler[c[x]] + 1;
			}

			return;
		}

		if (eler[kov] > 0) {
			int val = eler[kov];
			for (int i = (int)erintett.size() - 1; i >= 0; i--) {
				eler[erintett[i]] = val + 1;
				val++;
			}
			return;
		}

		u = kov;
	}
}

int main() {
	int n;
	cin >> n;

	c.assign(n + 1, 0);
	eler.assign(n + 1, 0);
	volt.assign(n + 1, 0);

	for (int i = 1; i <= n; i++) cin >> c[i];

	for (int i = 1; i <= n; i++) {
		if (!eler[i]) bejar(i);
	}

	int leg = 1;

	for (int i = 2; i <= n; i++) {
		if (eler[i] > eler[leg]) leg = i;
	}

	cout << leg << ' ' << eler[leg];
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
subtask220/20
2Accepted2ms316 KiB
3Accepted2ms316 KiB
4Accepted1ms316 KiB
5Accepted2ms316 KiB
6Accepted2ms316 KiB
7Accepted2ms316 KiB
8Accepted2ms316 KiB
9Accepted2ms316 KiB
10Accepted2ms316 KiB
11Accepted2ms316 KiB
12Accepted1ms508 KiB
subtask318/18
13Accepted79ms2808 KiB
14Accepted76ms2612 KiB
15Accepted76ms2612 KiB
16Accepted78ms2780 KiB
17Accepted78ms3064 KiB
18Accepted81ms3508 KiB
19Accepted79ms3504 KiB
20Accepted81ms3412 KiB
21Accepted78ms3924 KiB
22Accepted79ms3748 KiB
subtask442/42
23Accepted1ms500 KiB
24Accepted2ms316 KiB
25Accepted2ms316 KiB
26Accepted1ms316 KiB
27Accepted2ms316 KiB
28Accepted2ms316 KiB
29Accepted2ms316 KiB
30Accepted2ms316 KiB
31Accepted2ms316 KiB
32Accepted2ms316 KiB
33Accepted2ms316 KiB
34Accepted1ms508 KiB
35Accepted79ms2808 KiB
36Accepted76ms2612 KiB
37Accepted76ms2612 KiB
38Accepted78ms2780 KiB
39Accepted78ms3064 KiB
40Accepted81ms3508 KiB
41Accepted79ms3504 KiB
42Accepted81ms3412 KiB
43Accepted78ms3924 KiB
44Accepted79ms3748 KiB
45Accepted82ms2612 KiB
46Accepted82ms2612 KiB
47Accepted82ms2612 KiB
48Accepted82ms2804 KiB
49Accepted82ms2956 KiB
50Accepted82ms2868 KiB
51Accepted82ms2868 KiB
52Accepted81ms2764 KiB
53Accepted82ms3044 KiB
54Accepted82ms3248 KiB