Pagini recente » Cod sursa (job #2744809) | Cod sursa (job #2126435) | Cod sursa (job #639301) | Cod sursa (job #908267) | Cod sursa (job #1905675)
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
int a[100000];
int main ()
{
int n,z,y;
fin>>n;
a[1]=0;
for( int i =1; i<=n-1; i++)
{
fin>>z;
fin>>y;
a[y]=z;
}
int p,k,st[100000],viz[100000]={0},c[100000];
st[1]=1;
p=1;
viz[1]=1;
int i=1;
c[1]=1;
while(p>0)
{
k=1;
while((k<=n && a[k]!=st[p]) || (a[k]==st[p] && viz[k]==1))
{
k++;
}
if(k>n)
{
p--;
if(p==1)
{
i++;
c[i]=1;
}
}
else
{
p++;
st[p]=k;
viz[k]=1;
if(p>c[i])
{
c[i]=p;
}
}
}
int max1=0,max2=0;
for(int j=1; j<=i;j++)
{
if(c[j]>max1)
{
max2=max1;
max1=c[j];
}
else if(c[j]>max2)
{
max2=c[j];
}
}
fout<<max1+max2-1;
fout.close();
fin.close();
return 0;
}