#include<fstream>
using namespace std;
ifstream fin ("prog.in");
ofstream fout ("prog.out");
int n;
int t[100],a[100][100],l[100];
struct q
{
int val, sf, i, t[100];
}maxx,maxx1;
int ok;
void citire()
{
int i=1;
while(fin>>t[i])
{
a[i][t[i]]=1;
a[t[i]][i]=1;
l[t[i]]++;i++;
}
n=i;
}
void df(int nd, int k,int p)
{
for(int i=1;i<n;i++)
if(a[nd][i]==1&&i!=p)
{
t[i]=nd;
df(i,k+1,nd);
}
if(maxx.val<k)
{ maxx.val=k;maxx.sf=nd;ok=1;}
}
void afisare(int nd)
{
if(nd!=0)
afisare(maxx.t[nd]);
fout<<nd<<' ';
}
int main ()
{
citire();
for(int i=1;i<n;i++)
{
if(l[i]==0)
{
ok=0;
t[i]=0;
df(i, 1,0);
if(ok==1)
{
maxx.i=i;
for(int j=1;j<=n;j++)
maxx.t[j]=t[j];
}
}
if(t[i]==0)
{
ok=0;
df(i,1,0);
if(ok==1)
{
maxx.i=i;
for(int j=1;j<=n;j++)
maxx.t[j]=t[j];
}
}
}
afisare(maxx.sf);
return 0;
}
Comments