197772025-12-22 15:06:22LacikaKvHírlánccpp17Accepted 80/8048ms9100 KiB
#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;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
subtask220/20
2Accepted2ms316 KiB
3Accepted1ms316 KiB
4Accepted2ms316 KiB
5Accepted2ms316 KiB
6Accepted1ms316 KiB
7Accepted1ms316 KiB
8Accepted1ms316 KiB
9Accepted1ms316 KiB
10Accepted1ms316 KiB
11Accepted1ms316 KiB
12Accepted1ms508 KiB
subtask318/18
13Accepted37ms2612 KiB
14Accepted39ms2772 KiB
15Accepted37ms2764 KiB
16Accepted39ms3044 KiB
17Accepted43ms4404 KiB
18Accepted43ms4700 KiB
19Accepted43ms4924 KiB
20Accepted43ms4812 KiB
21Accepted45ms7732 KiB
22Accepted48ms9100 KiB
subtask442/42
23Accepted1ms316 KiB
24Accepted2ms316 KiB
25Accepted1ms316 KiB
26Accepted2ms316 KiB
27Accepted2ms316 KiB
28Accepted1ms316 KiB
29Accepted1ms316 KiB
30Accepted1ms316 KiB
31Accepted1ms316 KiB
32Accepted1ms316 KiB
33Accepted1ms316 KiB
34Accepted1ms508 KiB
35Accepted37ms2612 KiB
36Accepted39ms2772 KiB
37Accepted37ms2764 KiB
38Accepted39ms3044 KiB
39Accepted43ms4404 KiB
40Accepted43ms4700 KiB
41Accepted43ms4924 KiB
42Accepted43ms4812 KiB
43Accepted45ms7732 KiB
44Accepted48ms9100 KiB
45Accepted35ms2612 KiB
46Accepted35ms2612 KiB
47Accepted35ms2612 KiB
48Accepted35ms2768 KiB
49Accepted37ms3216 KiB
50Accepted37ms3636 KiB
51Accepted37ms3532 KiB
52Accepted35ms3636 KiB
53Accepted37ms4148 KiB
54Accepted39ms4660 KiB