Cod sursa(job #211573)

Utilizator alexeiIacob Radu alexei Data 2 octombrie 2008 21:12:59
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<string.h>
#define NMAX 100024
using namespace std;

vector < int > Q[NMAX];

int D[NMAX];

bool cmp(const int &A, const int &B)
{
     return D[A]>D[B];
}

int max(const int a,const int b)
{
    return a>b?a:b;
}

void df(const int nod)
{
     int i;
     int val=Q[nod].size(),SOL=0;
     
     for(i=0; i<val; ++i)
              df(Q[nod][i]);
     
     if( val )
     {
         sort(Q[nod].begin(), Q[nod].end(), cmp );
         for(i=0; i<val; ++i)
                  SOL=max(SOL,D[Q[nod][i]]+i+1);
         D[nod]=SOL;
     }
}
void erase(const int N)
{
     memset(D,0,N);
     for(int i=1; i<=N; ++i)Q[i].clear();
}

int main()
{
    freopen("zvon.in","r",stdin);
    freopen("zvon.out","w",stdout);
    
    int T,N=0;
    scanf("%d",&T);
    
    int i,a1,a2;
    
    while( T-- )
    {
           if( N )
           erase(N);
           scanf("%d",&N);
           for(i=1; i<N; ++i){
                    scanf("%d%d\n",&a1,&a2);
                    Q[a1].push_back(a2);
           }
           
           df(1);
           printf("%d\n",D[1]);
           
    }
           
    return 0;
}