Cod sursa(job #483201)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 7 septembrie 2010 12:20:53
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

#define file_in "zvon.in"
#define file_out "zvon.out"

#define nmax 101000

int T,N;
vector<int> G[nmax];
vector<int> L[nmax];
int d[nmax];

void adfile(void){
	
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d", &T);
	
	return ;
	
}

int cmp(int a, int b) { return a>b; }

void parc(int nod){
	
	d[nod]=0;
	
	vector<int> :: iterator it;
	
	for (it=G[nod].begin();it!=G[nod].end();++it){
		
		parc(*it);
		
		L[nod].push_back(d[*it]);
	}
	
	sort(L[nod].begin(),L[nod].end(),cmp);
	int x=1;
	
	for (it=L[nod].begin();it!=L[nod].end();++it,x++)
		 d[nod]=max(d[nod],(*it)+x);
}
	

void solve(void){
	
	int i,x,y;
	
	while(T--){
		
		scanf("%d", &N);
		
		for (i=0;i<nmax;++i)
			 G[i].clear(),
			 L[i].clear();
			 
		for (i=1;i<N;++i){

			scanf("%d %d", &x, &y);
			
			G[x].push_back(y);
		}
		
		parc(1);
		
		printf("%d\n", d[1]);
	}
}

int main(){
	
	adfile();
	solve();
	
	return 0;
	
}