Cod sursa(job #157205)

Utilizator recviemAlexandru Pana recviem Data 12 martie 2008 21:47:19
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include "cstdio"
#include "vector"
#include "algorithm"
#define fin  "zvon.in"
#define fout "zvon.out"
using namespace std;

	int T,n;
	vector<int> g[10000];
	int tmp[10000];

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

void zvon(int x)
{
	vector<int> subaltern;
	for (vector<int>::iterator it = g[x].begin(); it!=g[x].end(); it++)
	{
		zvon(*it);
		subaltern.push_back(tmp[*it]);
	}
	sort(subaltern.begin(),subaltern.end(),cmp);
	tmp[x]=0;
	int i=1;
	for (vector<int>::iterator it = subaltern.begin(); it!=subaltern.end(); it++, i++)
	{
		if (tmp[x]<*it+i)
			tmp[x]=*it+i;
	}
}

void citire()
{
	freopen(fin,"r",stdin);
	scanf("%d ",&T);
	while(T>0)
	{
		T--;
		scanf("%d ",&n);
		for (int i=0;i<n;i++)
			g[i].clear();
		for (int i=0;i<n-1;i++)
		{
			int x,y;
			scanf("%d %d",&x,&y);
			g[x].push_back(y);
		}
		zvon(1);
		printf("%d\n",tmp[1]);
	}
	fclose(stdin);
}

int main()
{
	freopen(fout,"w",stdout);
	citire();
	fclose(stdout);
	return 0;
}