Cod sursa(job #962780)

Utilizator danalex97Dan H Alexandru danalex97 Data 15 iunie 2013 17:20:05
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <algorithm>
#include <fstream>
#include <vector>
using namespace std;

const int Nmax = 100010;

ifstream F("zvon.in");
ofstream G("zvon.out");

int T,N,D[Nmax];
vector<int> A[Nmax];

struct cmp
{
	inline bool operator() (const int &a, const int &b)
	{
		return D[a] > D[b];
	}
};

#define IT(type) vector<type>::iterator

void Get(int Nod)
{
	D[Nod]=0;
	for (IT(int) it=A[Nod].begin();it!=A[Nod].end();++it)
        Get(*it);
    if ( A[Nod].size() == 0 ) return;
    sort(A[Nod].begin(),A[Nod].end(),cmp());
    for (unsigned int i=0,before=1;i<A[Nod].size();++i)
        D[Nod] = max( D[ A[Nod][i] ] + int(i) + 1, D[Nod] );
}

int main()
{
    F>>T;
	while ( T-- )
	{
		F>>N;
		for (int i=1,x,y;i<N;++i)
		{
			F>>x>>y;
			A[x].push_back(y);
		}

		Get(1);
		G<<D[1]<<'\n';

		for(int i=1;i<=N;++i)
		    A[i].clear();
	}
}