199022025-12-29 12:54:58LllamaHírlánccpp17Accepted 80/8083ms3756 KiB
#include <iostream>
#include<vector>
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 best = 1;

    for (int i = 2; i <= n; i++) {
        //cout << eler[i] << ' ';
        if (eler[i] > eler[best]) best = i;
    }

    cout << best << ' ' << eler[best];
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
subtask220/20
2Accepted2ms316 KiB
3Accepted2ms316 KiB
4Accepted2ms500 KiB
5Accepted2ms316 KiB
6Accepted2ms316 KiB
7Accepted2ms376 KiB
8Accepted1ms316 KiB
9Accepted1ms316 KiB
10Accepted2ms500 KiB
11Accepted2ms316 KiB
12Accepted2ms392 KiB
subtask318/18
13Accepted79ms2612 KiB
14Accepted76ms2768 KiB
15Accepted76ms2836 KiB
16Accepted76ms2768 KiB
17Accepted78ms3080 KiB
18Accepted78ms3512 KiB
19Accepted79ms3376 KiB
20Accepted79ms3504 KiB
21Accepted79ms3756 KiB
22Accepted79ms3756 KiB
subtask442/42
23Accepted1ms316 KiB
24Accepted2ms316 KiB
25Accepted2ms316 KiB
26Accepted2ms500 KiB
27Accepted2ms316 KiB
28Accepted2ms316 KiB
29Accepted2ms376 KiB
30Accepted1ms316 KiB
31Accepted1ms316 KiB
32Accepted2ms500 KiB
33Accepted2ms316 KiB
34Accepted2ms392 KiB
35Accepted79ms2612 KiB
36Accepted76ms2768 KiB
37Accepted76ms2836 KiB
38Accepted76ms2768 KiB
39Accepted78ms3080 KiB
40Accepted78ms3512 KiB
41Accepted79ms3376 KiB
42Accepted79ms3504 KiB
43Accepted79ms3756 KiB
44Accepted79ms3756 KiB
45Accepted83ms2612 KiB
46Accepted82ms2612 KiB
47Accepted82ms2544 KiB
48Accepted82ms2760 KiB
49Accepted82ms2792 KiB
50Accepted82ms2868 KiB
51Accepted82ms2868 KiB
52Accepted82ms2868 KiB
53Accepted82ms3048 KiB
54Accepted83ms3416 KiB