188082025-11-05 12:51:34csdavidHírlánccpp17Elfogadva 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms3380 KiB
subtask220/20
2Elfogadva4ms3380 KiB
3Elfogadva4ms3572 KiB
4Elfogadva4ms3380 KiB
5Elfogadva4ms3564 KiB
6Elfogadva4ms3528 KiB
7Elfogadva4ms3380 KiB
8Elfogadva4ms3380 KiB
9Elfogadva4ms3380 KiB
10Elfogadva4ms3380 KiB
11Elfogadva4ms3380 KiB
12Elfogadva4ms3380 KiB
subtask318/18
13Elfogadva83ms3492 KiB
14Elfogadva86ms3524 KiB
15Elfogadva86ms3636 KiB
16Elfogadva86ms3792 KiB
17Elfogadva92ms5168 KiB
18Elfogadva97ms5684 KiB
19Elfogadva93ms5684 KiB
20Elfogadva90ms5580 KiB
21Elfogadva92ms8500 KiB
22Elfogadva92ms9672 KiB
subtask442/42
23Elfogadva4ms3384 KiB
24Elfogadva4ms3380 KiB
25Elfogadva4ms3572 KiB
26Elfogadva4ms3380 KiB
27Elfogadva4ms3564 KiB
28Elfogadva4ms3528 KiB
29Elfogadva4ms3380 KiB
30Elfogadva4ms3380 KiB
31Elfogadva4ms3380 KiB
32Elfogadva4ms3380 KiB
33Elfogadva4ms3380 KiB
34Elfogadva4ms3380 KiB
35Elfogadva83ms3492 KiB
36Elfogadva86ms3524 KiB
37Elfogadva86ms3636 KiB
38Elfogadva86ms3792 KiB
39Elfogadva92ms5168 KiB
40Elfogadva97ms5684 KiB
41Elfogadva93ms5684 KiB
42Elfogadva90ms5580 KiB
43Elfogadva92ms8500 KiB
44Elfogadva92ms9672 KiB
45Elfogadva86ms3380 KiB
46Elfogadva86ms3380 KiB
47Elfogadva83ms3564 KiB
48Elfogadva86ms3704 KiB
49Elfogadva86ms3968 KiB
50Elfogadva86ms4496 KiB
51Elfogadva87ms4400 KiB
52Elfogadva90ms4300 KiB
53Elfogadva85ms4916 KiB
54Elfogadva83ms5432 KiB