Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement