Pagini recente » Cod sursa (job #1722216) | Cod sursa (job #460857) | Cod sursa (job #1986747) | Cod sursa (job #1051952) | Cod sursa (job #105595)
Cod sursa(job #105595)
#include<cstdio>
#include<algorithm>
struct celula{
long inf;
celula *leg;
}*a[101000],*p;
long i,test,k,n,x,y,b[101000];
bool desc(long a,long b){
if(a>b)return 1;
else return 0;
}
long df(long x){
long m=0,q;
long *t=new long[b[x]];
p=a[x];
while(p!=0){
t[q++]=df(p->inf);
p=p->leg;
}
std::sort(t,t+q,desc);
for(k=0;k<q;k++)
if(t[k]+k>m)m=t[k]+k;
return m;
}
int main(){
freopen("zvon.in","r",stdin);
freopen("zvon.out","w",stdout);
scanf("%ld",&test);
for(i=0;i<test;i++){
scanf("%ld",&n);
for(k=0;k<n;k++)
a[k]=0;
for(k=0;k<n-1;k++){
scanf("%ld%ld",&x,&y);
p=new celula;
p->inf=y;p->leg=a[x];a[x]=p;b[x]++;
}
printf("%ld\n",df(1));
}
fclose(stdin);
fclose(stdout);
return 0;
}