Cod sursa(job #983604)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 12 august 2013 13:05:02
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

#define Nmax 100005

vector <int> timp(Nmax);
vector <int> G[Nmax];

inline int cmp( const int &a, const int &b )
{
    return timp[a] > timp[b];
}

void DFS( int node )
{
    for ( unsigned i = 0; i < G[node].size(); ++i )
                    DFS( G[node][i] );

    if ( G[node].empty() )
            return;

    sort( G[node].begin(), G[node].end(), cmp );

    for ( unsigned i = 0; i < G[node].size(); ++i )
            timp[node] = max( timp[node], timp[ G[node][i] ] + int(i) + 1 );
}

int T, N;

int main()
{
    ifstream f("zvon.in");
    ofstream g("zvon.out");

    f >> T;

    for ( ; T; T-- )
    {
        f >> N;

        for ( int i = 1, a, b; i < N; ++i )
        {
            f >> a >> b;

            G[a].push_back( b );
        }

        DFS( 1 );

        g << timp[1] << "\n";

        //timp.clear();

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

    f.close();
    g.close();

    return 0;
}