197702025-12-22 14:09:59LacikaKvHírlánccpp17Time limit exceeded 38/80600ms8244 KiB
#include <stdio.h>
#include <string.h>

struct diak
{
    int tovaad;
    int maxhossz=0;
};

void ResetSzamolas(bool *szamolt, int len) {
   memset(szamolt,0,(len+1)*sizeof(bool));
}

void MaximizeLoop(diak *a, int epos, int pos, int maxhossz)
{
   if (epos != pos) {
      a[pos].maxhossz = maxhossz;
      MaximizeLoop(a,epos,a[pos].tovaad,maxhossz);
   }
}

//bool IsLoopStartPos(int len, diak* a, bool *szamolt, int pos)
//{  int cpos = pos;
//   do {
//      szamolt[cpos] = true;
//      cpos = a[cpos].tovaad;
//   } while (!szamolt[cpos]);
//   return (cpos == pos);
//}

//void EqualizeLoop(int len, diak* a, bool *szamolt, int spos)
//{  if (IsLoopStartPos(len, a, szamolt,spos)) {
////      cout << "Kor:" << spos << endl;
//      MaximizeLoop(a, spos, a[spos].tovaad, a[spos].maxhossz);
//   } else {
//      ResetSzamolas(szamolt,len);
////      cout << "Lepjel:" << a[spos].tovaad << endl;
//      EqualizeLoop(len, a, szamolt, a[spos].tovaad);
//   }
//}

int lanchossz (diak *e, int len, diak *a, bool *szamolt, int pos, int *ringpos)
{
   if (a[pos].maxhossz) {
//      cout << endl;
      return a[pos].maxhossz;
   }
   if (szamolt[pos]) {
      *ringpos = pos;
   } else {
      szamolt[pos] = true;
//      cout << pos << "->" << a[pos].maxhossz << ", ";
      a[pos].maxhossz = lanchossz (e, len, a, szamolt, a[pos].tovaad,ringpos) + 1;
      if (e->maxhossz < a[pos].maxhossz) {
         e->maxhossz = a[pos].maxhossz;
         e->tovaad = pos;
      }
//      cout << pos << "->" << a[pos].maxhossz << ", ";
   }
   return a[pos].maxhossz;
}
//void hirmax (diak *a, int len)
//{  int i,pos,maxh=0;
//   for (i=1; i<len; i++) {
//      if (a[i].maxhossz>maxh) {
//         maxh=a[i].maxhossz;
//         pos=i;
//      }
//   }
//   cout<<pos<<" "<<maxh<<endl;
//}

int main()
{
   diak eredm;
   int N;
//   std::ios_base::sync_with_stdio (false); // Supposedly makes I/O faster
   /**/

   scanf("%d",&N);
   diak a[N+1];
   int i,i1,i2,i3,i4,le;
   le = N/4;
   i1=1; i2=2; i3=3; i4=4;
   for (i=0; i<le; i++) {
      scanf("%d %d %d %d",&(a[i1].tovaad),&(a[i2].tovaad),&(a[i3].tovaad),&(a[i4].tovaad));
      i1+=4;i2+=4;i3+=4;i4+=4;
   }
   for (i=i1;i<N+1;i++) {
      scanf("%d",&(a[i].tovaad));
   }
   /*/
   N = 11;
   diak a[N+1] = { {0,0}, {3,0}, {1,0}, {2,0}, {3,0}, {2,0}, {5,0}, {6,0}, {5,0}, {10,0}, {11,0}, {10,0} };

   /**/
   bool szamolt[N+1];
   eredm.tovaad = 0;
   eredm.maxhossz = 0;
   int ringpos = 0;
//   KiirDiak(a, N);
   for (int i=1; i<=N; i++) {
      if (a[i].maxhossz == 0) {
//         cout << endl << "Elem:" << i << endl;
         ResetSzamolas(szamolt,N);
         lanchossz(&eredm, N+1, a, szamolt, i,&ringpos);
         MaximizeLoop(a, ringpos, a[ringpos].tovaad, a[ringpos].maxhossz);
//         KiirDiak(a, N+1);
//         cout << endl;
      }
   }
//   cout<<eredm.tovaad<<" "<<eredm.maxhossz<<endl;
   printf("%d %d",eredm.tovaad,eredm.maxhossz);
   return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
subtask220/20
2Accepted1ms316 KiB
3Accepted1ms316 KiB
4Accepted1ms316 KiB
5Accepted1ms316 KiB
6Accepted1ms500 KiB
7Accepted1ms316 KiB
8Accepted2ms412 KiB
9Accepted3ms412 KiB
10Accepted2ms316 KiB
11Accepted2ms500 KiB
12Accepted1ms508 KiB
subtask318/18
13Accepted93ms2100 KiB
14Accepted46ms2100 KiB
15Accepted43ms2360 KiB
16Accepted43ms2572 KiB
17Accepted46ms3892 KiB
18Accepted46ms4288 KiB
19Accepted46ms4148 KiB
20Accepted46ms4308 KiB
21Accepted50ms7220 KiB
22Accepted52ms8244 KiB
subtask40/42
23Accepted1ms316 KiB
24Accepted1ms316 KiB
25Accepted1ms316 KiB
26Accepted1ms316 KiB
27Accepted1ms316 KiB
28Accepted1ms500 KiB
29Accepted1ms316 KiB
30Accepted2ms412 KiB
31Accepted3ms412 KiB
32Accepted2ms316 KiB
33Accepted2ms500 KiB
34Accepted1ms508 KiB
35Accepted93ms2100 KiB
36Accepted46ms2100 KiB
37Accepted43ms2360 KiB
38Accepted43ms2572 KiB
39Accepted46ms3892 KiB
40Accepted46ms4288 KiB
41Accepted46ms4148 KiB
42Accepted46ms4308 KiB
43Accepted50ms7220 KiB
44Accepted52ms8244 KiB
45Time limit exceeded500ms2152 KiB
46Time limit exceeded505ms1948 KiB
47Time limit exceeded549ms2100 KiB
48Time limit exceeded523ms2204 KiB
49Time limit exceeded578ms2356 KiB
50Time limit exceeded600ms2976 KiB
51Time limit exceeded600ms2976 KiB
52Time limit exceeded600ms2996 KiB
53Time limit exceeded579ms3380 KiB
54Time limit exceeded600ms3996 KiB