Cod sursa(job #750978)

Utilizator ChallengeMurtaza Alexandru Challenge Data 23 mai 2012 19:37:20
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

const char InFile[]="zvon.in";
const char OutFile[]="zvon.out";
const int MaxN=100111;

ifstream fin(InFile);
ofstream fout(OutFile);

int T,N,x,y,viz[MaxN],H[MaxN];
vector<int> A[MaxN];

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

void DFS(int nod)
{
	H[nod]=0;
	for(vector<int>::iterator it=A[nod].begin();it!=A[nod].end();++it)
	{
		DFS(*it);
	}

	if(A[nod].size())
	{
		sort(A[nod].begin(),A[nod].end(),cmp());

		int ind=0;
		for(vector<int>::iterator it=A[nod].begin();it!=A[nod].end();++it)
		{
			int tmp=H[*it]+1+ind;
			if(tmp>H[nod])
			{
				H[nod]=tmp;
			}
			++ind;
		}
	}
}

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

		DFS(1);

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

		fout<<H[1]<<"\n";
	}
	fin.close();
	fout.close();
	return 0;
}