Cod sursa(job #98329)

Utilizator vlad_popaVlad Popa vlad_popa Data 10 noiembrie 2007 12:37:14
Problema Zvon Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 1.36 kb
using namespace std;

#include <cstdio>
#include <string>
#include <cassert>
#include <vector>
#include <algorithm>

#define FIN "zvon.in"
#define FOUT "zvon.out"
#define NMAX 100001

#define INF 0x3f3f3f3f
#define pb push_back

vector <int> fi[NMAX];
int N, Nf[NMAX], s[NMAX], vec[NMAX];

int cmp (const int a, const int b)
{
    return vec[a] >= vec[b];
}

void df (int nod)
{
    int i;
    for (i = 0; i < Nf[nod]; ++ i)
    {
        df (fi[nod][i]);
        vec[i] = s[fi[nod][i]];
    }
    
    sort (vec, vec + Nf[nod], cmp);
        
    for (i = 0; i < Nf[nod]; ++ i)
        if (s[nod] <= vec[i] + i + 1)
            s[nod] = vec[i] + i + 1;
        
    
}

void read ()
{
    int T, i, x, y;
    scanf ("%d\n", &T);
    
    while (T--)
    {
        memset (s, 0, sizeof (s));
        memset (Nf, 0, sizeof (Nf));
        
        scanf ("%d\n", &N);
        
        if (N <= 1)
        {
            printf ("%d\n", 0);
            continue;
        }
        
        for (i = 1; i < N; ++ i)
        {
            scanf ("%d %d\n", &x, &y);
            fi[x].pb (y);
            ++ Nf[x];
        }
        
        df (1);
        
        printf ("%d\n", s[1]);
    }
}

int
 main ()
{
    freopen (FIN, "rt", stdin);
    freopen (FOUT, "wt", stdout);
    
    read ();
    
    return 0;
}