Cod sursa(job #1615548)

Utilizator qwertyuiTudor-Stefan Berbinschi qwertyui Data 26 februarie 2016 17:45:25
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

ifstream fin ("zvon.in");
ofstream fout ("zvon.out");

vector < vector <int> > edge;
vector <int> DP;
int N, K, T;

void DFS (int node)
{

    for (int i = 0; i < edge[node].size(); ++i)
		DFS(edge[node][i]);


	vector <int> to;

	for (int i = 0; i < edge[node].size(); ++i)
		to.push_back(DP[edge[node][i]]+ 1);

	sort(to.begin(),to.end());

    for (int i = to.size() - 1; i >= 0; --i)
		DP[node] = max(DP[node],(int) (to[i] + to.size() - 1 - i));


}

int main()
{
    fin >>T;
    for (int i = 1; i <= T; ++i)
	{
		fin >>N;

		DP.clear();
		DP.resize(N+1);

		edge.clear();
		edge.resize(N+1);


        for (int j = 1; j < N; ++j)
		{
            int x,y;
            fin >>x >>y;
            edge[x].push_back(y);
		}

        DFS(1);

        if (N == 1)
			DP[1] = 0;

        fout <<DP[1] <<'\n';

	}
    return 0;
}