232572026-01-16 20:20:24horvayzsomborHírlánccpp17Hibás válasz 0/80189ms12200 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
subtask20/20
2Hibás válasz2ms508 KiB
3Hibás válasz3ms316 KiB
4Hibás válasz3ms336 KiB
5Hibás válasz2ms316 KiB
6Hibás válasz2ms316 KiB
7Hibás válasz2ms316 KiB
8Hibás válasz2ms316 KiB
9Hibás válasz2ms316 KiB
10Hibás válasz1ms316 KiB
11Hibás válasz1ms316 KiB
12Hibás válasz2ms316 KiB
subtask30/18
13Hibás válasz97ms2740 KiB
14Hibás válasz116ms2988 KiB
15Hibás válasz130ms3124 KiB
16Hibás válasz143ms3500 KiB
17Hibás válasz155ms5684 KiB
18Hibás válasz162ms6064 KiB
19Hibás válasz158ms6196 KiB
20Hibás válasz164ms6196 KiB
21Hibás válasz170ms10548 KiB
22Hibás válasz189ms12200 KiB
subtask40/42
23Elfogadva1ms316 KiB
24Hibás válasz2ms508 KiB
25Hibás válasz3ms316 KiB
26Hibás válasz3ms336 KiB
27Hibás válasz2ms316 KiB
28Hibás válasz2ms316 KiB
29Hibás válasz2ms316 KiB
30Hibás válasz2ms316 KiB
31Hibás válasz2ms316 KiB
32Hibás válasz1ms316 KiB
33Hibás válasz1ms316 KiB
34Hibás válasz2ms316 KiB
35Hibás válasz97ms2740 KiB
36Hibás válasz116ms2988 KiB
37Hibás válasz130ms3124 KiB
38Hibás válasz143ms3500 KiB
39Hibás válasz155ms5684 KiB
40Hibás válasz162ms6064 KiB
41Hibás válasz158ms6196 KiB
42Hibás válasz164ms6196 KiB
43Hibás válasz170ms10548 KiB
44Hibás válasz189ms12200 KiB
45Hibás válasz93ms2884 KiB
46Hibás válasz109ms2732 KiB
47Hibás válasz122ms2868 KiB
48Hibás válasz130ms2988 KiB
49Hibás válasz145ms3380 KiB
50Hibás válasz164ms4264 KiB
51Hibás válasz144ms4272 KiB
52Hibás válasz187ms4308 KiB
53Hibás válasz148ms4912 KiB
54Hibás válasz155ms6052 KiB