197852025-12-22 16:44:24szabel26Hírlánccpp17Wrong answer 18/80186ms17464 KiB
// hirlanc.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

#include <iostream>
#include <vector>
using namespace std;

struct adat {
    vector<int>be;
    int sz = 0, tav = 0;
    bool lat = 0, kor = 0;
};

vector<adat>x;

pair<int, int>sol = { 0,0 };

int n, hossz, db, tav;

bool kor(int akt, int kezd)
{
    x[akt].lat = true;
    ++tav;
    if (x[x[akt].sz].kor)
    {
        x[akt].lat = false;
        x[akt].kor = false;
        return false;
    }
    else
    {
        if (x[akt].sz == kezd)
        {
            x[akt].lat = false;

            x[x[akt].sz].tav = tav + 1;
            x[akt].tav = tav;

            x[x[akt].sz].kor = true;
            x[akt].kor = true;
            return true;
        }
        else if (x[x[akt].sz].lat)
        {
            x[akt].lat = false;
            x[akt].kor = false;
            return false;
        }

        if (kor(x[akt].sz, kezd))
        {
            x[akt].lat = false;
            x[akt].tav = tav;
            x[akt].kor = true;
            return true;
        }
        else
        {
            x[akt].lat = false;
            x[akt].kor = false;
            return false;
        }
    }

}

void bejar(int akt, int tav)
{
    x[akt].lat = 1;
    x[akt].tav = tav;
    for (auto& e : x[akt].be)
    {
        if (!x[e].lat && !x[e].kor)
        {
            bejar(e, tav + 1);
        }
    }
}

int main()
{
    cin >> n;

    x.resize(n + 1);
    int a = 0;
    for (int i = 1; i <= n; ++i)
    {
        cin >> a;
        x[i].sz = a;
        x[a].be.push_back(i);
    }

    for (int i = 1; i <= n; ++i)
    {
        tav = 0;
        if (!x[i].kor) kor(i, i);
    }

    for (int i = 1; i <= n; ++i)
    {
        if (x[i].kor) bejar(i, x[i].tav);
        if (x[i].tav > sol.second)
        {
            sol.first = i;
            sol.second = x[i].tav;
        }
    }

    cout << sol.first << " " << sol.second;
}

// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu

// Tips for Getting Started: 
//   1. Use the Solution Explorer window to add/manage files
//   2. Use the Team Explorer window to connect to source control
//   3. Use the Output window to see build output and other messages
//   4. Use the Error List window to view errors
//   5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
//   6. In the future, to open this project again, go to File > Open > Project and select the .sln file
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
subtask20/20
2Wrong answer2ms316 KiB
3Accepted2ms316 KiB
4Wrong answer2ms504 KiB
5Accepted2ms508 KiB
6Wrong answer2ms316 KiB
7Accepted2ms316 KiB
8Wrong answer2ms316 KiB
9Wrong answer2ms332 KiB
10Accepted2ms316 KiB
11Accepted2ms316 KiB
12Accepted2ms492 KiB
subtask318/18
13Accepted162ms14388 KiB
14Accepted135ms14324 KiB
15Accepted137ms14560 KiB
16Accepted162ms14508 KiB
17Accepted142ms15296 KiB
18Accepted140ms15412 KiB
19Accepted165ms15412 KiB
20Accepted165ms15412 KiB
21Accepted138ms16968 KiB
22Accepted142ms17464 KiB
subtask40/42
23Accepted1ms316 KiB
24Wrong answer2ms316 KiB
25Accepted2ms316 KiB
26Wrong answer2ms504 KiB
27Accepted2ms508 KiB
28Wrong answer2ms316 KiB
29Accepted2ms316 KiB
30Wrong answer2ms316 KiB
31Wrong answer2ms332 KiB
32Accepted2ms316 KiB
33Accepted2ms316 KiB
34Accepted2ms492 KiB
35Accepted162ms14388 KiB
36Accepted135ms14324 KiB
37Accepted137ms14560 KiB
38Accepted162ms14508 KiB
39Accepted142ms15296 KiB
40Accepted140ms15412 KiB
41Accepted165ms15412 KiB
42Accepted165ms15412 KiB
43Accepted138ms16968 KiB
44Accepted142ms17464 KiB
45Accepted141ms12344 KiB
46Accepted177ms12008 KiB
47Accepted168ms12080 KiB
48Wrong answer143ms12164 KiB
49Accepted166ms12228 KiB
50Wrong answer151ms12596 KiB
51Accepted186ms12852 KiB
52Wrong answer179ms13232 KiB
53Wrong answer137ms12904 KiB
54Wrong answer163ms13108 KiB