Cod sursa(job #2008596)

Utilizator dragomirmanuelDragomir Manuel dragomirmanuel Data 6 august 2017 23:00:23
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

const int NodMax = 100025;

vector < int > G[NodMax];

struct Operatoru
{
    bool operator()(int a, int b) const
    {
        return a > b;
    };
} cmp;

int Solve(int nod)
{
    if(G[nod].size())
    {
        vector < int > ::iterator it;

        int vec[NodMax];

        int k = 0;

        for(it=G[nod].begin(); it!=G[nod].end(); ++it)
        {
            vec[++k] = Solve(*it);
        }

        sort(vec+1, vec+k+1, cmp);

        int maxi = 1 + vec[1];

        for(int i=2; i<=k; ++i)

        {
            if(vec[i]+i > maxi)
                maxi = vec[i]+i;
        }

        return maxi;
    }

    else
        return 0;
}

int main()
{
    freopen("zvon.in", "r", stdin);
    freopen("zvon.out", "w", stdout);

    int teste, N;
    scanf("%d", &teste);

    while(teste)
    {
        scanf("%d", &N);

        for(int i=1; i<N; ++i)
        {
            int x, y;
            scanf("%d %d", &x, &y);
            G[x].push_back(y);
        }

        printf("%d\n", Solve(1));

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

        --teste;

    }
    return 0;
}