Cod sursa(job #193604)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 5 iunie 2008 13:01:11
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <cstdio>
#include <string.h>
#include <algorithm>
#define IN "zvon.in"
#define OUT "zvon.out"
#define N_MAX 100001

using namespace std;
inline int mod(int x) { if(x<0) return 0; return x;}
int Tt[N_MAX],T[N_MAX],niv[N_MAX],sub[N_MAX];
int a[N_MAX][300];
int n,teste;

bool comp (const int x, const int y) 
{
	if(T[x]>T[y])
		return 1;
	return 0;
}

void scan()
{
	freopen(IN, "r",stdin);
	freopen(OUT, "w",stdout);
	scanf("%d", &teste);
}

void df(int x)
{
	int y;
	for(int i=1;i<=a[x][0];++i)
	{
		y=a[x][i];
		df(y);
	}
	sort(a[x]+1,a[x]+a[x][0]+1, comp);
	for(int i=1;i<=a[x][0];++i)
	{
		y=a[x][i];
		T[x]=max(T[x],i+T[y]);
	}
}	

void dfs(int x)
{
	for(int i=1;i<=a[x][0];++i)
	{
		int y=a[x][i];
		Tt[y]=i+Tt[x];
		df(y);
	}
}

void solve()
{
	int max,rez;
	for(int ti=1;ti<=teste;++ti)
	{
		memset(Tt, 0, sizeof(Tt));  
		memset(T, 0, sizeof(T));  
		//rez=max=0;
		int x,y;
		scanf("%d", &n);
		for(int i=1;i<=n;++i)
			a[i][0]=0,T[i]=0,Tt[i]=0;
		//niv[1]=0;
		for(int i=1;i<n;++i)
		{
			scanf("%d%d", &x,&y);
			a[x][++a[x][0]]=y;
		}
		df(1);
		
		//for(int i=1;i<n;++i)
		//	sort(a[i]+1,a[i]+a[i][0]+1, comp);
		
		/*if(ti==3)	for(int i=1;i<n;++i)
		{
			for(int j=1;j<=a[i][0];++j)
				printf("%d ",a[i][j]);
			printf("\n");
		}*/
		//dfs(1);
		//rez+=max;
		/*
		for(int i=1;i<=n;++i)
			printf("%d ",T[i]);
		*/
		printf("%d\n",T[1]);
	}	
}

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