Cod sursa(job #106552)

Utilizator tvladTataranu Vlad tvlad Data 18 noiembrie 2007 19:07:53
Problema Zvon Scor 100
Compilator cpp Status done
Runda Happy Coding 2007 Marime 1.01 kb
#include <stdio.h>
#include <vector>
#include <algorithm>

using namespace std;
const int n_max = 100001;

vector < int > v[n_max];

int d[n_max],
	vaz[n_max];
int t, n, i, b, a;
inline int max(int x, int y)
{
	if (x > y)
		return x;
	return y;
}
void df(int x)
{
	vector <int>::iterator it;
	vector <int> temp;
	vaz[x] = 1;
	int i;
	for (it = v[x].begin(); it!= v[x].end(); ++ it)
	{
		df(*it);
		temp.push_back(d[*it]);
	}
	sort(temp.begin(), temp.end());
	if (v[x].size()>0)
	{
		d[x] = temp[temp.size()-1] +1;
		for (i = temp.size() - 2; i >-1; -- i)
			d[x] = max(d[x],temp[i] + temp.size() - i);
	}
}

int main()
{
	freopen("zvon.in","r",stdin);
	freopen("zvon.out","w",stdout);
	scanf("%d", &t);
	for (; t>0; --t)
	{
		scanf("%d", &n);
		for (i =1 ; i <= n; ++ i)
		{
			d[i] = 0;
			v[i].clear();
			vaz[i] = 0;
		}
		for (i = 1; i < n; ++ i)
		{
			scanf("%d %d", &a, &b);
			v[a].push_back(b);
		}
		df(1);
		vaz[1] = 1;
		printf("%d\n",d[1]);
	}
	return 0;
}