Cod sursa(job #1683498)

Utilizator cordun_cristinaCristina Maria Cordun cordun_cristina Data 10 aprilie 2016 15:00:33
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;
ifstream f("zvon.in");
ofstream g("zvon.out");

const int Nmax = 100005;
int t, n, DP[Nmax];
vector <int> G[Nmax];

bool Crit(int a , int b)
{
    return DP[a]>DP[b];
}

void DFS(int nod)
{
    for(int i = 0; i < (int)G[nod].size(); i++)
    {
        int vecin = G[nod][i];
        DFS(vecin);
    }
    sort(G[nod].begin(), G[nod].end(), Crit);
    for(int i = 0; i < (int)G[nod].size(); i++)
    {
        int vecin = G[nod][i];
        DP[nod] = max(DP[nod], DP[vecin]+i+1);
    }
}

int main()
{
    f>>t;
    while(t--)
    {
        f>>n;
        for(int i = 1; i < n; i++)
        {
            int x, y;
            f>>x>>y;
            G[x].push_back(y);
        }
        DFS(1);
        if(G[1].size() == 0) g<<0<<'\n';
        else g<<DP[1]<<'\n';
        for(int i = 1; i <= n; i++)
        {
            G[i].clear();
            DP[i] = 0;
        }
    }
    return 0;
}