Cod sursa(job #555260)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 15 martie 2011 13:04:09
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
#include <vector>
#include <algorithm>
#define NMAX 100005
#define pb push_back
using namespace std;
int t,n,C[NMAX],B[NMAX],r,best;
vector <int> A[NMAX];
void read()
{
	scanf("%d",&n);
	int i,x,y;
	for (i=1; i<n; i++)
	{
		scanf("%d%d",&x,&y);
		A[x].pb(y);
	}
}
inline int max(int x,int y)
{
	return x>y ? x : y;
}
void dfs(int nod)
{
	int i,vec;
	for (i=0; i<A[nod].size(); i++)
	{
		vec=A[nod][i];
		dfs(vec);
	}
	r=0;
	for (i=0; i<A[nod].size(); i++)
	{
		vec=A[nod][i];
		B[++r]=C[vec];
	}
	sort(B+1,B+r+1);
	best=0;
	for (i=1; i<=r; i++)
		best=max(best,B[i]+r-i+1);
	C[nod]=best;
}
void reset()
{
	int i;
	for (i=1; i<=n; i++)
		A[i].clear();
}
int main()
{
	freopen("zvon.in","r",stdin);
	freopen("zvon.out","w",stdout);
	scanf("%d",&t);
	while (t--)
	{
		read();
		dfs(1);
		printf("%d\n",C[1]);
		reset();
	}
	return 0;
}