Cod sursa(job #1235656)

Utilizator pulseOvidiu Giorgi pulse Data 30 septembrie 2014 09:44:49
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

const int MAXN = 100005;
int T, N, Tmin[MAXN];
vector <int> G[MAXN];

bool cmp(int a, int b)
{
    return (Tmin[a] > Tmin[b]);
}

void DFS(int node)
{
    for (vector <int> :: iterator it = G[node].begin(); it != G[node].end(); ++it)
    {
        int vecin = *it;
        DFS(vecin);
    }
    sort(G[node].begin(), G[node].end(), cmp);
    for (int i = 0; i < G[node].size(); ++i)
        Tmin[node] = max(Tmin[node], Tmin[ G[node][i] ] + i + 1);
}

int main()
{
    fin >> T;
    for (; T; --T)
    {
        fin >> N;
        for (int i = 1; i <= N; ++i)
        {
            G[i].clear();
            Tmin[i] = 0;
        }
        for (int i = 1; i < N; ++i)
        {
            int a, b;
            fin >> a >> b;
            G[a].push_back(b);
        }
        DFS(1);
        fout << Tmin[1] << '\n';
    }
    fin.close();
    fout.close();
    return 0;
}