Cod sursa(job #104144)

Utilizator plastikDan George Filimon plastik Data 15 noiembrie 2007 22:39:49
Problema Zvon Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 1.09 kb
#define _CRT_SECURE_NO_DEPRECATE
#include <cstdio>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;

const int MAX_N = 100001;
int T[MAX_N], M, N;
multimap<int, int> E;


bool Compare(int a, int b) {
	return (a > b);
}

int DepthFirst(int i) {
	multimap<int, int>::iterator it;
	it = E.find(i);
	if (it == E.end())
		return 0;
	vector<int> Td;
	for (; it != E.end() && it->first == i; ++ it)
		Td.push_back(DepthFirst(it->second));
	sort(Td.begin(), Td.end(), Compare);
	int j, res = 0;
	for (j = 0; j < Td.size(); ++ j)
		if (res < (j + 1) + Td[j])
			res = (j + 1) + Td[j];
	return res;
}

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

	int t, v1, v2, i;

	scanf("%d", &t);
	for (; t > 0; -- t) {
		E.clear();
		scanf("%d", &N);
		M = N - 1;
		for (i = 0; i < M; ++ i) {
			scanf("%d %d", &v1, &v2);
			E.insert(pair<int, int>(v1, v2));
		}
		printf("%d\n", DepthFirst(1));
		/*for (it = E.begin(); it != E.end(); ++ it)
			printf("%d %d\n", it->first, it->second);
		printf("\n");*/
	}

	return 0;
}