Cod sursa(job #99462)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 11 noiembrie 2007 11:44:09
Problema Zvon Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 0.8 kb
#include <stdio.h>
#include <algorithm>
#include <vector>

using namespace std;

#define maxn 100010
#define pb push_back
#define max(a,b) (a > b ? a : b)

int n;
vector <int> a[maxn];
int g[maxn],p[maxn],c[maxn];

int cmp(int x,int y)
{
	return c[x]>c[y];
}

void DFS(int nod)
{
	int i;

	c[nod]=0;
	for (i=0;i<g[nod];i++) 
	{
		DFS(a[nod][i]);
		p[i]=a[nod][i];
	}

	sort(p,p+g[nod],cmp);
	for (i=0;i<g[nod];i++) c[nod]=max(c[nod],c[p[i]]+i+1);
}

int main()
{
	freopen("zvon.in","r",stdin);
	freopen("zvon.out","w",stdout);

	int T,i,x,y;

	scanf("%d ",&T);

	while (T>0)
	{
		scanf("%d ",&n);

		for (i=1;i<n;i++)
		{
			scanf("%d %d ",&x,&y);
			a[x].pb(y);
		}

		for (i=1;i<=n;i++) g[i]=a[i].size();

		DFS(1);
		
		printf("%d\n",c[1]);

		for (i=1;i<=n;i++) vector <int> ().swap(a[i]);

		T--;
	}

	return 0;
}