#include <stdio.h>
#include <mem.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;
}
Compilation error
open /var/local/lib/isolate/412/box/a.out: no such file or directory
main.cpp:2:10: fatal error: mem.h: No such file or directory
2 | #include <mem.h>
| ^~~~~~~
compilation terminated.