Cod sursa(job #98914)

Utilizator filipbFilip Cristian Buruiana filipb Data 10 noiembrie 2007 18:48:54
Problema Zvon Scor 100
Compilator cpp Status done
Runda Happy Coding 2007 Marime 1.01 kb
#include <stdio.h>
#include <algorithm>
#include <vector>

using namespace std;

#define maxim(a, b) ((a > b) ? a : b)
#define NMax 100005

int N, D[NMax];
vector<int> G[NMax];

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

void df(int nod)
{
    int i, sz;

    for (i = 0, sz = G[nod].size(); i < sz; i++)
        df(G[nod][i]);

    D[nod] = 0;
    if (sz)
    {
        sort(G[nod].begin(), G[nod].end(), cmp);
        for (i = 0; i < sz; i++)
            D[nod] = maxim(D[nod], D[G[nod][i]] + i + 1);
    }
    
}

int main(void)
{
    int T, i, u, v;
    
    freopen("zvon.in", "r", stdin);
    freopen("zvon.out", "w", stdout);

    for (scanf("%d", &T); T; T--)
    {
        scanf("%d", &N);
        for (i = 1; i < N; i++)
        {
            scanf("%d %d", &u, &v);
            G[u].push_back(v);
        }

        df(1);

        printf("%d\n", D[1]);

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

    return 0;
}