Cod sursa(job #99755)

Utilizator victorsbVictor Rusu victorsb Data 11 noiembrie 2007 16:06:28
Problema Zvon Scor 100
Compilator cpp Status done
Runda Happy Coding 2007 Marime 0.88 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

#define Nmax 100015
#define pb push_back
#define sz(a) (int)((a).size())

int n;
vector<int> lv[Nmax];
int d[Nmax];

void citire()
{
	int i, a, b;

	scanf("%d\n", &n);

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

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

int cmp(const int a, const int b)
{
	return d[a] > d[b];
}

void df(int nod)
{
	int i;

	for (i = 0; i < sz(lv[nod]); ++i)
		df(lv[nod][i]);

	d[nod] = 0;
	sort(lv[nod].begin(), lv[nod].end(), cmp);

	for (i = 0; i < sz(lv[nod]); ++i)
		d[nod] = max(d[nod], d[lv[nod][i]] + i + 1);
}

void solve()
{
	df(1);
	printf("%d\n", d[1]);
}

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

	int i, t;
	scanf("%d\n", &t);
	for (i = 1; i <= t; ++i)
	{
		citire();
		solve();
	}

	return 0;
}