Cod sursa(job #606774)

Utilizator SpiderManSimoiu Robert SpiderMan Data 10 august 2011 10:10:10
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
# include <algorithm>
# include <cstdio>
# include <vector>
using namespace std;

const char *FIN = "zvon.in", *FOU = "zvon.out";
const int MAX = 100005;

int T, N;
vector <int> G[MAX], A[MAX];

inline void getmax (int &a, int b) {
    a = a > b ? a : b;
}

int dfs (int K) {
    int sol = 0;
    for (vector <int> :: iterator i = G[K].begin (); i != G[K].end (); ++i)
        A[K].push_back (dfs (*i));
    sort (A[K].begin (), A[K].end ());
    for (size_t i = 0; i < A[K].size (); ++i)
        getmax (sol, A[K][i] + (A[K].size () - i));
    return sol;
}

int main (void) {
    freopen (FIN, "r", stdin);
    freopen (FOU, "w", stdout);

    for (scanf ("%d", &T); T; --T) {
        scanf ("%d", &N);
        for (int i = 1, x, y; i < N; ++i) {
            scanf ("%d %d", &x, &y);
            G[x].push_back (y);
        }
        printf ("%d\n", dfs (1));
        for (int i = 0; i < N; ++i)
            if (G[i].size ()) {
                G[i].clear (), A[i].clear ();
            }
    }
}