Cod sursa(job #105688)

Utilizator maria_pparcalabescu maria daniela maria_p Data 17 noiembrie 2007 20:52:37
Problema Zvon Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 0.78 kb
#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;
}