Cod sursa(job #103453)

Utilizator damaDamaschin Mihai dama Data 15 noiembrie 2007 12:47:03
Problema Zvon Scor 100
Compilator cpp Status done
Runda Happy Coding 2007 Marime 0.91 kb
#include <stdio.h>
#include <vector>
#include <algorithm>

const int nmax = 100002;

using namespace std;

vector<int> v[nmax], vec;
int c[nmax];

void dfs(int nod);

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

	int t, test, n, i, a, b;

	scanf("%d", &t);

	for(test = 0; test < t; ++test)
	{
		scanf("%d", &n);

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

		dfs(1);
		printf("%d\n", c[1]);
		for(i = 1; i <= n; ++i)
		{
			vector<int> ().swap(v[i]);
		}
	}

	return 0;
}

void dfs(int nod)
{
	int i, sz = v[nod].size(), cnt = 0, max = 0;
	vector<int> vec;

	for(i = 0; i < sz; ++i)
	{
		dfs(v[nod][i]);
		vec.push_back(c[v[nod][i]]);
	}
	sort(vec.begin(), vec.end());
	sz = vec.size();
	for(i = 0; i < sz; ++i)
	{
		vec[i] += sz - i;
		if(max < vec[i])
		{
			max = vec[i];
		}
	}
	if(max != 1000000)
		c[nod] = max;

//	printf("%d %d\n", nod, c[nod]);
}