197772025-12-22 15:06:22LacikaKvHírlánccpp17Elfogadva 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
subtask220/20
2Elfogadva2ms316 KiB
3Elfogadva1ms316 KiB
4Elfogadva2ms316 KiB
5Elfogadva2ms316 KiB
6Elfogadva1ms316 KiB
7Elfogadva1ms316 KiB
8Elfogadva1ms316 KiB
9Elfogadva1ms316 KiB
10Elfogadva1ms316 KiB
11Elfogadva1ms316 KiB
12Elfogadva1ms508 KiB
subtask318/18
13Elfogadva37ms2612 KiB
14Elfogadva39ms2772 KiB
15Elfogadva37ms2764 KiB
16Elfogadva39ms3044 KiB
17Elfogadva43ms4404 KiB
18Elfogadva43ms4700 KiB
19Elfogadva43ms4924 KiB
20Elfogadva43ms4812 KiB
21Elfogadva45ms7732 KiB
22Elfogadva48ms9100 KiB
subtask442/42
23Elfogadva1ms316 KiB
24Elfogadva2ms316 KiB
25Elfogadva1ms316 KiB
26Elfogadva2ms316 KiB
27Elfogadva2ms316 KiB
28Elfogadva1ms316 KiB
29Elfogadva1ms316 KiB
30Elfogadva1ms316 KiB
31Elfogadva1ms316 KiB
32Elfogadva1ms316 KiB
33Elfogadva1ms316 KiB
34Elfogadva1ms508 KiB
35Elfogadva37ms2612 KiB
36Elfogadva39ms2772 KiB
37Elfogadva37ms2764 KiB
38Elfogadva39ms3044 KiB
39Elfogadva43ms4404 KiB
40Elfogadva43ms4700 KiB
41Elfogadva43ms4924 KiB
42Elfogadva43ms4812 KiB
43Elfogadva45ms7732 KiB
44Elfogadva48ms9100 KiB
45Elfogadva35ms2612 KiB
46Elfogadva35ms2612 KiB
47Elfogadva35ms2612 KiB
48Elfogadva35ms2768 KiB
49Elfogadva37ms3216 KiB
50Elfogadva37ms3636 KiB
51Elfogadva37ms3532 KiB
52Elfogadva35ms3636 KiB
53Elfogadva37ms4148 KiB
54Elfogadva39ms4660 KiB