Cod sursa(job #104169)

Utilizator plastikDan George Filimon plastik Data 15 noiembrie 2007 23:02:09
Problema Zvon Scor 100
Compilator cpp Status done
Runda Happy Coding 2007 Marime 1.1 kb
#define _CRT_SECURE_NO_DEPRECATE
#include <cstdio>
#include <map>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;

const int MAX_N = 100001;
int T[MAX_N], st[MAX_N], M, N;

struct neighb {
	int nn;
	deque<int> ne;
} E[MAX_N];

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

int DepthFirst(int i) {
	if (E[i].nn == 0)
		return 0;
	vector<int> Td;
	int j;
	for (j = 0; j < E[i].nn; ++ j)
		Td.push_back(DepthFirst(E[i].ne[j]));
	sort(Td.begin(), Td.end(), Compare);
	int res = 0;
	for (j = 0; j < E[i].nn; ++ 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, j;
	multimap<int, int>::iterator it, jt;

	scanf("%d", &t);
	for (; t > 0; -- t) {

		scanf("%d", &N);
		for (i = 0; i < N; ++ i) {
			E[i].nn = 0;
			E[i].ne.clear();
		}

		M = N - 1;
		for (i = 0; i < M; ++ i) {
			scanf("%d %d", &v1, &v2);
			E[v1 - 1].nn ++;
			E[v1 - 1].ne.push_back(v2 - 1);
		}

		printf("%d\n", DepthFirst(0));
	}

	return 0;
}