Pagini recente » Cod sursa (job #1592126) | Cod sursa (job #1590893) | Cod sursa (job #1087920) | Cod sursa (job #1907389) | Cod sursa (job #105703)
Cod sursa(job #105703)
#include<cstdio>
#include <cstring>
#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,k;
long t[b[x]+1];
memset(t,0,sizeof(t));
celula *p;
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+1>m)m=t[k]+k+1;
}
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=1;k<=n;k++) {
for (; a[k];) {
p = a[k];
a[k] = a[k]->leg;
delete p;
}
}
memset(b,0,sizeof(b));
}
fclose(stdin);
fclose(stdout);
return 0;
}