#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
int T[100],A[100][100],n;
int inf=300000;
char L[100][100][300];
void citire()
{
fin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i!=j) A[i][j]=inf;
for(int i=1;i<=n;i++)
{
fin>>T[i];
A[i][T[i]]=1;
A[T[i]][i]=1;
L[i][T[i]][0]=i+48; L[i][T[i]][1]=' '; L[i][T[i]][2]=T[i]+48;
L[T[i]][i][0]=T[i]+48; L[T[i]][i][1]=' '; L[T[i]][i][2]=i+48;
}
}
void RF()
{
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(A[i][j]>A[i][k]+A[k][j])
{
A[i][j]=A[i][k]+A[k][j];
char aux[300]="";
strcpy(aux,L[i][k]);
strcat(aux,L[k][j]+1);
strcpy(L[i][j],aux);
}
}
void afis_max()
{
int maxx=0,x,y;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(A[i][j]>maxx)
{
maxx=A[i][j];
x=i; y=j;
}
fout<<L[x][y];
}
int main()
{
citire();
RF();
afis_max();
fin.close();
fout.close();
return 0;
}
|