213722026-01-12 21:51:03horvayzsomborHírlánccpp17Accepted 80/8097ms12852 KiB
#include <iostream>
#include <vector>
#include <climits>

using namespace std;

void dfs(int a, int d, vector<int> &to, vector<int> &state, vector<int> &ans, vector<int> &depth)
{
    state[a] = 1;
    depth[a] = d;

    int b = to[a];

    if(state[b] == 0)
    {
        dfs(b, d + 1, to, state, ans, depth);

        if(ans[a] == 0) ans[a] = ans[b] + 1;
    }else if(state[b] == 1)
    {
        int len = d - depth[b] + 1;

        ans[b] = len;

        int x = to[b];

        while(x != b)
        {
            ans[x] = len;
            x = to[x];
        }
    }else
    {
        ans[a] = ans[b] + 1;
    }

    state[a] = 2;
}

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

    vector<int> to(n + 1);

    for(int i = 1; i <= n; i++)
    {
        cin >> to[i];
    }
    
    vector<int> ans(n + 1);

    int maxe = INT_MIN;
    int index;

    vector<int> state(n + 1);
    vector<int> depth(n + 1);

    for(int i = 1; i <= n; i++)
    {
        if(state[i] == 0)
        {
            dfs(i, 0, to, state, ans, depth);
        }

        if(ans[i] > maxe)
        {
            maxe = ans[i];
            index = i;
        }
    }

    cout << index << " " << maxe;

    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms508 KiB
subtask220/20
2Accepted2ms508 KiB
3Accepted2ms316 KiB
4Accepted2ms316 KiB
5Accepted2ms316 KiB
6Accepted2ms356 KiB
7Accepted2ms316 KiB
8Accepted2ms508 KiB
9Accepted2ms316 KiB
10Accepted2ms316 KiB
11Accepted1ms316 KiB
12Accepted1ms316 KiB
subtask318/18
13Accepted83ms3512 KiB
14Accepted83ms3380 KiB
15Accepted87ms3752 KiB
16Accepted87ms4148 KiB
17Accepted90ms6196 KiB
18Accepted90ms6568 KiB
19Accepted90ms6708 KiB
20Accepted92ms6564 KiB
21Accepted92ms11200 KiB
22Accepted97ms12852 KiB
subtask442/42
23Accepted2ms316 KiB
24Accepted2ms508 KiB
25Accepted2ms316 KiB
26Accepted2ms316 KiB
27Accepted2ms316 KiB
28Accepted2ms356 KiB
29Accepted2ms316 KiB
30Accepted2ms508 KiB
31Accepted2ms316 KiB
32Accepted2ms316 KiB
33Accepted1ms316 KiB
34Accepted1ms316 KiB
35Accepted83ms3512 KiB
36Accepted83ms3380 KiB
37Accepted87ms3752 KiB
38Accepted87ms4148 KiB
39Accepted90ms6196 KiB
40Accepted90ms6568 KiB
41Accepted90ms6708 KiB
42Accepted92ms6564 KiB
43Accepted92ms11200 KiB
44Accepted97ms12852 KiB
45Accepted82ms3500 KiB
46Accepted82ms3492 KiB
47Accepted82ms3500 KiB
48Accepted82ms3752 KiB
49Accepted82ms4148 KiB
50Accepted83ms4900 KiB
51Accepted83ms4660 KiB
52Accepted86ms4660 KiB
53Accepted85ms5752 KiB
54Accepted83ms6584 KiB