Cod sursa(job #606916)

Utilizator darrenRares Buhai darren Data 10 august 2011 13:37:25
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <cstring>
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

typedef vector<int> VI;

int T, N;
vector<VI> V;
int Tmin[100002], result;

inline bool compare(const int& i1, const int& i2)
{
    return Tmin[i1] > Tmin[i2];
}

void comp(int x)
{
    for (VI::iterator it = V[x].begin(); it != V[x].end(); ++it)
        comp(*it);
    sort(V[x].begin(), V[x].end(), compare);

    for (VI::iterator it = V[x].begin(); it != V[x].end(); ++it)
        Tmin[x] = max(Tmin[x], Tmin[*it] + it - V[x].begin() + 1);

    result = max(result, Tmin[x]);
}

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

    fin >> T;
    while (T--)
    {
        V.clear();
        memset(Tmin, 0, sizeof(Tmin));
        result = 0;

        fin >> N;

        V.resize(N + 1);
        for (int i = 1, A, B; i < N; ++i)
        {
            fin >> A >> B;
            V[A].push_back(B);
        }

        comp(1);

        fout << result << '\n';
    }

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