Cod sursa(job #211574)

Utilizator alexeiIacob Radu alexei Data 2 octombrie 2008 21:16:06
Problema Zvon Scor 100
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]);
     
     D[nod]=0;
     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)
{
     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;
}