#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 | Összpont | Teszt | Verdikt | Idő | Memória | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 0/0 | ||||||
| 1 | Elfogadva | 3ms | 3380 KiB | ||||
| subtask2 | 20/20 | ||||||
| 2 | Elfogadva | 4ms | 3380 KiB | ||||
| 3 | Elfogadva | 4ms | 3572 KiB | ||||
| 4 | Elfogadva | 4ms | 3380 KiB | ||||
| 5 | Elfogadva | 4ms | 3564 KiB | ||||
| 6 | Elfogadva | 4ms | 3528 KiB | ||||
| 7 | Elfogadva | 4ms | 3380 KiB | ||||
| 8 | Elfogadva | 4ms | 3380 KiB | ||||
| 9 | Elfogadva | 4ms | 3380 KiB | ||||
| 10 | Elfogadva | 4ms | 3380 KiB | ||||
| 11 | Elfogadva | 4ms | 3380 KiB | ||||
| 12 | Elfogadva | 4ms | 3380 KiB | ||||
| subtask3 | 18/18 | ||||||
| 13 | Elfogadva | 83ms | 3492 KiB | ||||
| 14 | Elfogadva | 86ms | 3524 KiB | ||||
| 15 | Elfogadva | 86ms | 3636 KiB | ||||
| 16 | Elfogadva | 86ms | 3792 KiB | ||||
| 17 | Elfogadva | 92ms | 5168 KiB | ||||
| 18 | Elfogadva | 97ms | 5684 KiB | ||||
| 19 | Elfogadva | 93ms | 5684 KiB | ||||
| 20 | Elfogadva | 90ms | 5580 KiB | ||||
| 21 | Elfogadva | 92ms | 8500 KiB | ||||
| 22 | Elfogadva | 92ms | 9672 KiB | ||||
| subtask4 | 42/42 | ||||||
| 23 | Elfogadva | 4ms | 3384 KiB | ||||
| 24 | Elfogadva | 4ms | 3380 KiB | ||||
| 25 | Elfogadva | 4ms | 3572 KiB | ||||
| 26 | Elfogadva | 4ms | 3380 KiB | ||||
| 27 | Elfogadva | 4ms | 3564 KiB | ||||
| 28 | Elfogadva | 4ms | 3528 KiB | ||||
| 29 | Elfogadva | 4ms | 3380 KiB | ||||
| 30 | Elfogadva | 4ms | 3380 KiB | ||||
| 31 | Elfogadva | 4ms | 3380 KiB | ||||
| 32 | Elfogadva | 4ms | 3380 KiB | ||||
| 33 | Elfogadva | 4ms | 3380 KiB | ||||
| 34 | Elfogadva | 4ms | 3380 KiB | ||||
| 35 | Elfogadva | 83ms | 3492 KiB | ||||
| 36 | Elfogadva | 86ms | 3524 KiB | ||||
| 37 | Elfogadva | 86ms | 3636 KiB | ||||
| 38 | Elfogadva | 86ms | 3792 KiB | ||||
| 39 | Elfogadva | 92ms | 5168 KiB | ||||
| 40 | Elfogadva | 97ms | 5684 KiB | ||||
| 41 | Elfogadva | 93ms | 5684 KiB | ||||
| 42 | Elfogadva | 90ms | 5580 KiB | ||||
| 43 | Elfogadva | 92ms | 8500 KiB | ||||
| 44 | Elfogadva | 92ms | 9672 KiB | ||||
| 45 | Elfogadva | 86ms | 3380 KiB | ||||
| 46 | Elfogadva | 86ms | 3380 KiB | ||||
| 47 | Elfogadva | 83ms | 3564 KiB | ||||
| 48 | Elfogadva | 86ms | 3704 KiB | ||||
| 49 | Elfogadva | 86ms | 3968 KiB | ||||
| 50 | Elfogadva | 86ms | 4496 KiB | ||||
| 51 | Elfogadva | 87ms | 4400 KiB | ||||
| 52 | Elfogadva | 90ms | 4300 KiB | ||||
| 53 | Elfogadva | 85ms | 4916 KiB | ||||
| 54 | Elfogadva | 83ms | 5432 KiB | ||||