#include <iostream>
#include <cstring>
using namespace std;
struct diak
{
int tovaad;
int maxhossz = 0;
bool volt = false;
};
void MaximizeLoop(diak *a, int spos, int pos, int maxhossz)
{
if (spos != pos) {
a[pos].maxhossz = maxhossz;
MaximizeLoop(a,spos,a[pos].tovaad,maxhossz);
}
}
int lanchossz (diak *e, int len, diak *a, int pos, int *ringpos)
{
if (a[pos].maxhossz) {
return a[pos].maxhossz;
}
if (a[pos].volt) {
*ringpos = pos;
} else {
a[pos].volt = true;
a[pos].maxhossz = lanchossz (e, len, a, a[pos].tovaad,ringpos) + 1;
if (e->maxhossz < a[pos].maxhossz) {
e->maxhossz = a[pos].maxhossz;
e->tovaad = pos;
}
}
return a[pos].maxhossz;
}
int main()
{
int N;
diak eredm;
std::ios_base::sync_with_stdio (false); // Supposedly makes I/O faster
/**/
cin >> N;
diak a[N+1];
for (int i=1; i<=N; i++) {
cin >> a[i].tovaad;
}
/*/
N = 11;
diak a[N+1] = { {0,0,false}, {3,0,false}, {1,0,false}, {2,0,false}, {3,0,false}, {2,0,false}, {5,0,false}, {6,0,false}, {5,0,false}, {10,0,false}, {11,0,false}, {10,0,false} };
/**/
eredm.tovaad = 0;
eredm.maxhossz = 0;
int ringpos;
for (int i=1; i<=N; i++) {
if (a[i].maxhossz == 0) {
ringpos = 0;
lanchossz(&eredm, N+1, a, i,&ringpos);
if (ringpos)
MaximizeLoop(a, ringpos, a[ringpos].tovaad, a[ringpos].maxhossz);
}
}
cout << eredm.tovaad <<' '<<eredm.maxhossz<< endl;
return 0;
}
| Subtask | Sum | Test | Verdict | Time | Memory | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 0/0 | ||||||
| 1 | Accepted | 1ms | 316 KiB | ||||
| subtask2 | 20/20 | ||||||
| 2 | Accepted | 2ms | 316 KiB | ||||
| 3 | Accepted | 1ms | 316 KiB | ||||
| 4 | Accepted | 2ms | 316 KiB | ||||
| 5 | Accepted | 2ms | 316 KiB | ||||
| 6 | Accepted | 1ms | 316 KiB | ||||
| 7 | Accepted | 1ms | 316 KiB | ||||
| 8 | Accepted | 1ms | 316 KiB | ||||
| 9 | Accepted | 1ms | 316 KiB | ||||
| 10 | Accepted | 1ms | 316 KiB | ||||
| 11 | Accepted | 1ms | 316 KiB | ||||
| 12 | Accepted | 1ms | 508 KiB | ||||
| subtask3 | 18/18 | ||||||
| 13 | Accepted | 37ms | 2612 KiB | ||||
| 14 | Accepted | 39ms | 2772 KiB | ||||
| 15 | Accepted | 37ms | 2764 KiB | ||||
| 16 | Accepted | 39ms | 3044 KiB | ||||
| 17 | Accepted | 43ms | 4404 KiB | ||||
| 18 | Accepted | 43ms | 4700 KiB | ||||
| 19 | Accepted | 43ms | 4924 KiB | ||||
| 20 | Accepted | 43ms | 4812 KiB | ||||
| 21 | Accepted | 45ms | 7732 KiB | ||||
| 22 | Accepted | 48ms | 9100 KiB | ||||
| subtask4 | 42/42 | ||||||
| 23 | Accepted | 1ms | 316 KiB | ||||
| 24 | Accepted | 2ms | 316 KiB | ||||
| 25 | Accepted | 1ms | 316 KiB | ||||
| 26 | Accepted | 2ms | 316 KiB | ||||
| 27 | Accepted | 2ms | 316 KiB | ||||
| 28 | Accepted | 1ms | 316 KiB | ||||
| 29 | Accepted | 1ms | 316 KiB | ||||
| 30 | Accepted | 1ms | 316 KiB | ||||
| 31 | Accepted | 1ms | 316 KiB | ||||
| 32 | Accepted | 1ms | 316 KiB | ||||
| 33 | Accepted | 1ms | 316 KiB | ||||
| 34 | Accepted | 1ms | 508 KiB | ||||
| 35 | Accepted | 37ms | 2612 KiB | ||||
| 36 | Accepted | 39ms | 2772 KiB | ||||
| 37 | Accepted | 37ms | 2764 KiB | ||||
| 38 | Accepted | 39ms | 3044 KiB | ||||
| 39 | Accepted | 43ms | 4404 KiB | ||||
| 40 | Accepted | 43ms | 4700 KiB | ||||
| 41 | Accepted | 43ms | 4924 KiB | ||||
| 42 | Accepted | 43ms | 4812 KiB | ||||
| 43 | Accepted | 45ms | 7732 KiB | ||||
| 44 | Accepted | 48ms | 9100 KiB | ||||
| 45 | Accepted | 35ms | 2612 KiB | ||||
| 46 | Accepted | 35ms | 2612 KiB | ||||
| 47 | Accepted | 35ms | 2612 KiB | ||||
| 48 | Accepted | 35ms | 2768 KiB | ||||
| 49 | Accepted | 37ms | 3216 KiB | ||||
| 50 | Accepted | 37ms | 3636 KiB | ||||
| 51 | Accepted | 37ms | 3532 KiB | ||||
| 52 | Accepted | 35ms | 3636 KiB | ||||
| 53 | Accepted | 37ms | 4148 KiB | ||||
| 54 | Accepted | 39ms | 4660 KiB | ||||