222922026-01-14 20:46:01helloworldHírlánccpp17Wrong answer 0/8046ms9152 KiB
#include <bits/stdc++.h>
using namespace std;

int N;
int C[200001];
int dp[200001];     // dp[i]: hány tanulót ér el i-ből indulva
int state[200001];  // 0 = nem jártunk itt, 1 = folyamatban, 2 = kész

int dfs(int u) {
    state[u] = 1;          // most dolgozzuk fel
    int v = C[u];

    if (state[v] == 0) {
        dp[u] = dfs(v) + 1;
    }
    else if (state[v] == 1) {
        // ciklust találtunk
        int cur = v;
        int len = 1;
        while (C[cur] != v) {
            cur = C[cur];
            len++;
        }

        // a ciklus minden elemére ugyanaz az érték
        cur = v;
        dp[cur] = len;
        cur = C[cur];
        while (cur != v) {
            dp[cur] = len;
            cur = C[cur];
        }

        dp[u] = len;
    }
    else { // state[v] == 2, már kész
        dp[u] = dp[v] + 1;
    }

    state[u] = 2;          // kész
    return dp[u];
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> N;
    for (int i = 1; i <= N; i++) cin >> C[i];

    for (int i = 1; i <= N; i++) {
        if (state[i] == 0)
            dfs(i);
    }

    int best = 1;
    for (int i = 2; i <= N; i++) {
        if (dp[i] > dp[best]) best = i;
    }

    cout << best << " " << dp[best] << "\n";
    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
subtask20/20
2Wrong answer2ms316 KiB
3Wrong answer2ms316 KiB
4Wrong answer2ms316 KiB
5Wrong answer2ms316 KiB
6Wrong answer1ms316 KiB
7Wrong answer1ms316 KiB
8Wrong answer1ms472 KiB
9Wrong answer1ms316 KiB
10Wrong answer1ms316 KiB
11Wrong answer1ms316 KiB
12Wrong answer2ms316 KiB
subtask30/18
13Wrong answer32ms2768 KiB
14Wrong answer37ms2756 KiB
15Wrong answer37ms2964 KiB
16Wrong answer37ms3204 KiB
17Wrong answer41ms4396 KiB
18Wrong answer39ms4792 KiB
19Wrong answer41ms4928 KiB
20Wrong answer41ms4916 KiB
21Wrong answer43ms7748 KiB
22Wrong answer46ms9152 KiB
subtask40/42
23Accepted1ms512 KiB
24Wrong answer2ms316 KiB
25Wrong answer2ms316 KiB
26Wrong answer2ms316 KiB
27Wrong answer2ms316 KiB
28Wrong answer1ms316 KiB
29Wrong answer1ms316 KiB
30Wrong answer1ms472 KiB
31Wrong answer1ms316 KiB
32Wrong answer1ms316 KiB
33Wrong answer1ms316 KiB
34Wrong answer2ms316 KiB
35Wrong answer32ms2768 KiB
36Wrong answer37ms2756 KiB
37Wrong answer37ms2964 KiB
38Wrong answer37ms3204 KiB
39Wrong answer41ms4396 KiB
40Wrong answer39ms4792 KiB
41Wrong answer41ms4928 KiB
42Wrong answer41ms4916 KiB
43Wrong answer43ms7748 KiB
44Wrong answer46ms9152 KiB
45Wrong answer32ms2764 KiB
46Wrong answer32ms2612 KiB
47Wrong answer32ms2612 KiB
48Wrong answer32ms2680 KiB
49Wrong answer35ms3124 KiB
50Wrong answer34ms3644 KiB
51Wrong answer35ms3632 KiB
52Wrong answer34ms3636 KiB
53Wrong answer35ms4148 KiB
54Wrong answer35ms4676 KiB