Pagini recente » Cod sursa (job #3291046) | Cod sursa (job #1120777) | Cod sursa (job #1924896) | Cod sursa (job #1193398) | Cod sursa (job #105670)
Cod sursa(job #105670)
#include<cstdio>
#include<algorithm>
#define lung 100010
struct celula{
long inf;
celula *leg;
}*a[lung],*p;
long i,test,k,n,x,y,b[lung];
bool desc(long a,long b){
return a>b;
}
long df(long x){
long m=0,q=0;
long t[b[x]+1];
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;
for (i=0;i<b[x];i++)
delete(t+i);
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-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));
for(k=0;k<n;k++)
delete(a+k);
}
fclose(stdin);
fclose(stdout);
return 0;
}