232582026-01-16 20:49:42horvayzsomborHírlánccpp17Accepted 80/8096ms12328 KiB
#include <iostream>
#include <vector>

using namespace std;

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

    int b = to[a];

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

        int x = b;
        while(x != a)
        {
            ans[x] = len;
            x = to[x];
        }
    }else
    {
        dfs(b, d + 1, to, ans, vis, depth);
        if(ans[a] == 0) ans[a] = ans[b] + 1;
    }

    vis[a] = 0;
}

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 = -1;
    int index;

    vector<char> vis(n + 1);
    vector<int> depth(n + 1);

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

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

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

    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms500 KiB
subtask220/20
2Accepted2ms492 KiB
3Accepted2ms316 KiB
4Accepted2ms316 KiB
5Accepted2ms316 KiB
6Accepted1ms428 KiB
7Accepted2ms408 KiB
8Accepted1ms344 KiB
9Accepted1ms408 KiB
10Accepted1ms316 KiB
11Accepted1ms316 KiB
12Accepted2ms316 KiB
subtask318/18
13Accepted82ms2868 KiB
14Accepted83ms2992 KiB
15Accepted85ms3144 KiB
16Accepted86ms3492 KiB
17Accepted89ms5688 KiB
18Accepted90ms6076 KiB
19Accepted89ms6196 KiB
20Accepted90ms6064 KiB
21Accepted93ms10412 KiB
22Accepted96ms12328 KiB
subtask442/42
23Accepted1ms316 KiB
24Accepted2ms492 KiB
25Accepted2ms316 KiB
26Accepted2ms316 KiB
27Accepted2ms316 KiB
28Accepted1ms428 KiB
29Accepted2ms408 KiB
30Accepted1ms344 KiB
31Accepted1ms408 KiB
32Accepted1ms316 KiB
33Accepted1ms316 KiB
34Accepted2ms316 KiB
35Accepted82ms2868 KiB
36Accepted83ms2992 KiB
37Accepted85ms3144 KiB
38Accepted86ms3492 KiB
39Accepted89ms5688 KiB
40Accepted90ms6076 KiB
41Accepted89ms6196 KiB
42Accepted90ms6064 KiB
43Accepted93ms10412 KiB
44Accepted96ms12328 KiB
45Accepted79ms2732 KiB
46Accepted81ms2868 KiB
47Accepted81ms3000 KiB
48Accepted79ms3180 KiB
49Accepted82ms3504 KiB
50Accepted82ms4268 KiB
51Accepted83ms4296 KiB
52Accepted82ms4268 KiB
53Accepted82ms4916 KiB
54Accepted83ms5940 KiB