Cod sursa(job #102887)

Utilizator coderninuHasna Robert coderninu Data 14 noiembrie 2007 19:23:20
Problema Zvon Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 1.23 kb
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <algorithm>


#define Nmax 100001

using namespace std;


int t;
long n, i, Rez;
vector < long > gr[Nmax];

void readNext();
void stergeVect();
long rez(long);
inline long max(long x, long y) { return x>y?x:y; }
long divide(long,long);
void qSort(long,long);


int main()
{
	freopen("zvon.in", "r", stdin);
	freopen("zvon.out", "w", stdout);
	scanf("%d\n", &t);
	for (int I=1; I<=t; I++)
	{
		readNext();
                Rez=rez(1);
		printf("%ld\n", Rez);
		stergeVect();
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}

void readNext()
{
	long x, y;
	scanf("%ld\n", &n);
	for (i=1; i<n; i++)
	{
		scanf("%ld %ld\n", &x, &y);
        	gr[x].push_back(y);
	}
}

void stergeVect()
{
	for (i=1; i<=n; i++)
                gr[i].erase(gr[i].begin(), gr[i].end());
}

long rez(long x)
{
	long temp=0, maxim=0;
	vector < long > d;
	if (!gr[x].size()) return 0;
	else
	{
		for (i=0; i<gr[x].size(); i++)
			d.push_back(rez(gr[x][i]));
		sort(d.begin(),d.end());
                temp=d.size();
                for (i=1; i<=temp; i++)
			maxim=max(maxim,d[i-1]+temp-i+1);
		d.erase(d.begin(),d.end());
		return maxim;
	}
}