197842025-12-22 16:34:09szabel26Hírlánccpp17Hibás válasz 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
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
subtask20/20
2Hibás válasz2ms316 KiB
3Elfogadva2ms316 KiB
4Hibás válasz2ms316 KiB
5Elfogadva2ms316 KiB
6Hibás válasz2ms316 KiB
7Elfogadva2ms316 KiB
8Hibás válasz2ms316 KiB
9Hibás válasz2ms316 KiB
10Elfogadva2ms492 KiB
11Elfogadva2ms508 KiB
12Elfogadva2ms316 KiB
subtask318/18
13Elfogadva145ms14392 KiB
14Elfogadva165ms14384 KiB
15Elfogadva166ms14572 KiB
16Elfogadva145ms14720 KiB
17Elfogadva170ms15412 KiB
18Elfogadva168ms15412 KiB
19Elfogadva148ms15532 KiB
20Elfogadva148ms15508 KiB
21Elfogadva146ms16864 KiB
22Elfogadva152ms17404 KiB
subtask40/42
23Elfogadva1ms508 KiB
24Hibás válasz2ms316 KiB
25Elfogadva2ms316 KiB
26Hibás válasz2ms316 KiB
27Elfogadva2ms316 KiB
28Hibás válasz2ms316 KiB
29Elfogadva2ms316 KiB
30Hibás válasz2ms316 KiB
31Hibás válasz2ms316 KiB
32Elfogadva2ms492 KiB
33Elfogadva2ms508 KiB
34Elfogadva2ms316 KiB
35Elfogadva145ms14392 KiB
36Elfogadva165ms14384 KiB
37Elfogadva166ms14572 KiB
38Elfogadva145ms14720 KiB
39Elfogadva170ms15412 KiB
40Elfogadva168ms15412 KiB
41Elfogadva148ms15532 KiB
42Elfogadva148ms15508 KiB
43Elfogadva146ms16864 KiB
44Elfogadva152ms17404 KiB
45Elfogadva185ms12340 KiB
46Elfogadva185ms12084 KiB
47Elfogadva182ms12084 KiB
48Hibás válasz150ms12208 KiB
49Elfogadva170ms12340 KiB
50Hibás válasz164ms12424 KiB
51Elfogadva167ms13060 KiB
52Hibás válasz203ms13092 KiB
53Hibás válasz162ms12852 KiB
54Hibás válasz162ms13108 KiB