Cod sursa(job #1493692)

Utilizator blackoddAxinie Razvan blackodd Data 29 septembrie 2015 19:52:39
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

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

#define MaxN 100001

int t, n;
vector<int> G[MaxN];

int C[MaxN];
bool viz[MaxN];

bool Cmp(int i, int j)
{
    return C[i] > C[j];
}

void Dfs(int);
void Reset();

int main()
{
    fin >> t;

    while(t)
    {
        fin >> n;
        for ( int i = 1, x, y; i < n; ++i )
        {
            fin >> x >> y;
            G[x].push_back(y);
        }
        Dfs(1);
        fout << C[1] << '\n';
        Reset();
        t--;
    }

    fin.close();
    fout.close();
    return 0;
}

void Reset()
{
    for ( int i = 1; i <= n; ++i ) {
        viz[i] = false;
        C[i] = 0;
        G[i].clear();
    }

}

void Dfs( int i )
{
    viz[i] = true;

    for ( auto p : G[i])
        if ( !viz[p])
            {
                Dfs(p);
            }

    sort( G[i].begin() , G[i].end() , Cmp );

    int cnt = 0;

    for ( auto j : G[i] )
    {
        C[i] = max(C[i], C[j] + cnt + 1 );
        cnt++;
    }

}