197782025-12-22 15:10:08szabel26Hírlánccpp17Time limit exceeded 38/80600ms6316 KiB
// hirlanc.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

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

struct adat {
    int be, sz;
    bool lat;
};

vector<adat>x, y;
vector<int>csp;

pair<int, int>sol;

int n, hossz, db;

void bejar(int akt)
{
    x[akt].lat = true;
    y[akt].lat = true;
    ++hossz;
    if (x[x[akt].sz].lat == false)
    {
        bejar(x[akt].sz);
    }
    x[akt].lat = false;
    return;
}

void kor(int akt, int kezd)
{
    y[akt].lat = true;
    ++hossz;
    if (y[y[akt].sz].lat == false)
    {
        kor(y[akt].sz, kezd);
    }
}

int main()
{
    cin >> n;

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

    y = x;

    for (int i = 1; i <= n; ++i)
    {
        if (x[i].be == 0)
        {
            csp.push_back(i);
        }
    }

    sol.first = 0;
    sol.second = 0;
    for (auto& e : csp)
    {
        bejar(e);
        if (hossz > sol.second)
        {
            sol.first = e;
            sol.second = hossz;
        }
        hossz = 0;
    }

    for (int i = 1; i <= n; ++i)
    {
        if (y[i].lat == 0) ++db;
    }

    for (int i = 1; i <= n; ++i)
    {
        if (db <= sol.second)
        {
            break;
        }
        else
        {
            if (y[i].lat == false)
            {
                kor(i, i);
                if (hossz > sol.second)
                {
                    sol.first = i;
                    sol.second = hossz;
                }
                db += hossz;
                hossz = 0;
            }
        }
    }
    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
subtask220/20
2Accepted2ms316 KiB
3Accepted2ms316 KiB
4Accepted2ms316 KiB
5Accepted3ms316 KiB
6Accepted3ms512 KiB
7Accepted3ms316 KiB
8Accepted4ms316 KiB
9Accepted8ms316 KiB
10Accepted2ms316 KiB
11Accepted2ms316 KiB
12Accepted2ms316 KiB
subtask318/18
13Accepted86ms5108 KiB
14Accepted82ms5108 KiB
15Accepted85ms5148 KiB
16Accepted82ms5128 KiB
17Accepted83ms5148 KiB
18Accepted86ms5112 KiB
19Accepted86ms4916 KiB
20Accepted82ms5108 KiB
21Accepted81ms5108 KiB
22Accepted81ms4916 KiB
subtask40/42
23Accepted2ms316 KiB
24Accepted2ms316 KiB
25Accepted2ms316 KiB
26Accepted2ms316 KiB
27Accepted3ms316 KiB
28Accepted3ms512 KiB
29Accepted3ms316 KiB
30Accepted4ms316 KiB
31Accepted8ms316 KiB
32Accepted2ms316 KiB
33Accepted2ms316 KiB
34Accepted2ms316 KiB
35Accepted86ms5108 KiB
36Accepted82ms5108 KiB
37Accepted85ms5148 KiB
38Accepted82ms5128 KiB
39Accepted83ms5148 KiB
40Accepted86ms5112 KiB
41Accepted86ms4916 KiB
42Accepted82ms5108 KiB
43Accepted81ms5108 KiB
44Accepted81ms4916 KiB
45Accepted115ms5748 KiB
46Accepted449ms5552 KiB
47Time limit exceeded579ms5740 KiB
48Time limit exceeded600ms5740 KiB
49Time limit exceeded588ms5552 KiB
50Time limit exceeded583ms5804 KiB
51Time limit exceeded583ms5744 KiB
52Time limit exceeded583ms5812 KiB
53Time limit exceeded583ms6060 KiB
54Time limit exceeded584ms6316 KiB