188082025-11-05 12:51:34csdavidHírlánccpp17Accepted 80/8097ms9672 KiB
#include <iostream>
#include <queue>
using namespace std;

struct node{
    int kovetkezo, bejart=-1, x=0, loop=0;
};

node a[200000];
int n, y;

int hossz(int x, int l){
    //cout << x << ' ';
    if(a[a[x].kovetkezo].loop!=0){
        a[x].loop=l;
        return l;
    }
    else{
        a[a[x].kovetkezo].loop=hossz(a[x].kovetkezo, l+1);
        return a[a[x].kovetkezo].loop;
    }
}

void loopcheck(int x){
    a[x].loop=1;
    hossz(x, 1);
}

int dfs(int& h){
    //cout << '"' << h << '"';
    int l=0;
    int x=h;
    while(a[x].bejart!=h){
        if(a[x].loop){
            l+=a[x].loop;
            break;
        }
        else{
            a[x].bejart=h;
            x=a[x].kovetkezo;
            l++;
        }
        //cout << x << ' ' << a[x].kovetkezo << '\n';
    }
    if(a[x].loop==0){
        loopcheck(x);
    }
    return l;
}

int main()
{
    int maxi=-1, maxind;
    cin >> n;
    for(int i=0; i<n; i++){
        cin >> a[i].kovetkezo;
        a[i].kovetkezo--;
        a[a[i].kovetkezo].x++;
    }

    bool d=1;
    for(int i=0; i<n; i++){
        //cout << i+1 << ": " << a[i].x << '\n';
        if(a[i].x==0){
            d=0;
            int t=dfs(i);
            if(t>maxi){
                maxi=t;
                maxind=i+1;
            }
        }
    }
    if(d){
        for(int i=0; i<n; i++){
            if(a[i].bejart==-1){
                int t=dfs(i);
                if(t>maxi){
                    maxi=t;
                    maxind=i+1;
                }
            }
        }
    }
    /*for(int i=0; i<n; i++){
        cout << a[i].loop << ' ';
    }*/
    cout << maxind << ' ' << maxi << '\n';
    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms3380 KiB
subtask220/20
2Accepted4ms3380 KiB
3Accepted4ms3572 KiB
4Accepted4ms3380 KiB
5Accepted4ms3564 KiB
6Accepted4ms3528 KiB
7Accepted4ms3380 KiB
8Accepted4ms3380 KiB
9Accepted4ms3380 KiB
10Accepted4ms3380 KiB
11Accepted4ms3380 KiB
12Accepted4ms3380 KiB
subtask318/18
13Accepted83ms3492 KiB
14Accepted86ms3524 KiB
15Accepted86ms3636 KiB
16Accepted86ms3792 KiB
17Accepted92ms5168 KiB
18Accepted97ms5684 KiB
19Accepted93ms5684 KiB
20Accepted90ms5580 KiB
21Accepted92ms8500 KiB
22Accepted92ms9672 KiB
subtask442/42
23Accepted4ms3384 KiB
24Accepted4ms3380 KiB
25Accepted4ms3572 KiB
26Accepted4ms3380 KiB
27Accepted4ms3564 KiB
28Accepted4ms3528 KiB
29Accepted4ms3380 KiB
30Accepted4ms3380 KiB
31Accepted4ms3380 KiB
32Accepted4ms3380 KiB
33Accepted4ms3380 KiB
34Accepted4ms3380 KiB
35Accepted83ms3492 KiB
36Accepted86ms3524 KiB
37Accepted86ms3636 KiB
38Accepted86ms3792 KiB
39Accepted92ms5168 KiB
40Accepted97ms5684 KiB
41Accepted93ms5684 KiB
42Accepted90ms5580 KiB
43Accepted92ms8500 KiB
44Accepted92ms9672 KiB
45Accepted86ms3380 KiB
46Accepted86ms3380 KiB
47Accepted83ms3564 KiB
48Accepted86ms3704 KiB
49Accepted86ms3968 KiB
50Accepted86ms4496 KiB
51Accepted87ms4400 KiB
52Accepted90ms4300 KiB
53Accepted85ms4916 KiB
54Accepted83ms5432 KiB