197842025-12-22 16:34:09szabel26Hírlánccpp17Wrong answer 18/80203ms17404 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[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].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 answer2ms316 KiB
5Accepted2ms316 KiB
6Wrong answer2ms316 KiB
7Accepted2ms316 KiB
8Wrong answer2ms316 KiB
9Wrong answer2ms316 KiB
10Accepted2ms492 KiB
11Accepted2ms508 KiB
12Accepted2ms316 KiB
subtask318/18
13Accepted145ms14392 KiB
14Accepted165ms14384 KiB
15Accepted166ms14572 KiB
16Accepted145ms14720 KiB
17Accepted170ms15412 KiB
18Accepted168ms15412 KiB
19Accepted148ms15532 KiB
20Accepted148ms15508 KiB
21Accepted146ms16864 KiB
22Accepted152ms17404 KiB
subtask40/42
23Accepted1ms508 KiB
24Wrong answer2ms316 KiB
25Accepted2ms316 KiB
26Wrong answer2ms316 KiB
27Accepted2ms316 KiB
28Wrong answer2ms316 KiB
29Accepted2ms316 KiB
30Wrong answer2ms316 KiB
31Wrong answer2ms316 KiB
32Accepted2ms492 KiB
33Accepted2ms508 KiB
34Accepted2ms316 KiB
35Accepted145ms14392 KiB
36Accepted165ms14384 KiB
37Accepted166ms14572 KiB
38Accepted145ms14720 KiB
39Accepted170ms15412 KiB
40Accepted168ms15412 KiB
41Accepted148ms15532 KiB
42Accepted148ms15508 KiB
43Accepted146ms16864 KiB
44Accepted152ms17404 KiB
45Accepted185ms12340 KiB
46Accepted185ms12084 KiB
47Accepted182ms12084 KiB
48Wrong answer150ms12208 KiB
49Accepted170ms12340 KiB
50Wrong answer164ms12424 KiB
51Accepted167ms13060 KiB
52Wrong answer203ms13092 KiB
53Wrong answer162ms12852 KiB
54Wrong answer162ms13108 KiB