Cod sursa(job #98700)

Utilizator gcosminGheorghe Cosmin gcosmin Data 10 noiembrie 2007 16:03:23
Problema Zvon Scor 100
Compilator cpp Status done
Runda Happy Coding 2007 Marime 0.97 kb
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;

#define NMAX 100010

int N;

vector <int> leg[NMAX];
vector <int> jeg[NMAX];

int din[NMAX];

inline int MAX(int a, int b) { return (a > b) ? a : b; }

int cmp(int a, int b) { return a > b; }

void calc(int x)
{
	din[x] = 0;

	for (vector <int> :: iterator it = leg[x].begin(); it != leg[x].end(); ++it) {
		calc(*it);

		jeg[x].push_back(din[*it]);
	}

	sort(jeg[x].begin(), jeg[x].end(), cmp);

	int i = 1;
	for (vector <int> :: iterator it = jeg[x].begin(); it != jeg[x].end(); it++, i++) {
		din[x] = MAX(din[x], *it + i);
	}
}

int main()
{
	int T, i, x, y;

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

	for (scanf("%d", &T); T; --T) {
		scanf("%d", &N);

		for (i = 0; i < NMAX; i++) leg[i].clear();
		for (i = 0; i < NMAX; i++) jeg[i].clear();

		for (i = 1; i < N; i++) {
			scanf("%d %d", &x, &y);

			leg[x].push_back(y);
		}

		calc(1);

		printf("%d\n", din[1]);
	}

return 0;
}