Pagini recente » Cod sursa (job #3221225) | Cod sursa (job #858156) | Cod sursa (job #653629) | Cod sursa (job #47847) | Cod sursa (job #105688)
Cod sursa(job #105688)
#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,k;
long t[b[x]+1];
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>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-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;
}
}
}
fclose(stdin);
fclose(stdout);
return 0;
}