Cod sursa(job #881949)

Utilizator mlupseLupse-Turpan Mircea mlupse Data 18 februarie 2013 19:36:36
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>
#include <vector>
#include <functional>
#include <algorithm>

using namespace std;

const int kMaxN = 100005;

vector<int> G[kMaxN];
int N, TMin[kMaxN];

void DFS(const int X) {
    vector<int> T;
    for (vector<int>::iterator Y = G[X].begin(); Y != G[X].end(); ++Y) {
        DFS(*Y);
        T.push_back(TMin[*Y]);
    }
    sort (T.begin(), T.end(), greater<int>());
    for(int i = 0; i < T.size(); ++i)
        TMin[X] = max(TMin[X], i+1+T[i]);
}

inline void Clear() {
    for (int i = 1; i <= N; ++i)
        G[i].clear(), TMin[i] = 0;
    N = 0;
}

inline void Read() {
    scanf("%d", &N);
    for (int i = 1; i < N; ++i) {
        int X, Y; scanf("%d %d", &X, &Y);
        G[X].push_back(Y);
    }
}

inline void Print() {
    printf("%d\n", TMin[1]);
}

int main() {
    freopen("zvon.in", "r", stdin);
    freopen("zvon.out", "w", stdout);
    int T; scanf("%d", &T);
    for (; T; --T) {
        Read();
        DFS(1);
        Print();
        Clear();
    }
    return 0;
}