Pagini recente » Cod sursa (job #2038835) | Cod sursa (job #2158848) | Cod sursa (job #1937012) | Cod sursa (job #1029075) | Cod sursa (job #134698)
Cod sursa(job #134698)
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
struct point { int v; point *l; } *G[100000];
int F[100000], n;
void ReadTest ()
{
int i,x,y;
point *p;
scanf ( "%d" , &n );
for ( i=1 ; i<n ; i++ ) {
scanf ( "%d %d" , &x , &y );
p = new point;
p->v = y-1;
p->l = G[x-1];
G[x-1]=p;
F[x-1]++;
}
}
void CleanUp ()
{
memset ( F , 0 , n*sizeof ( int ) );
memset ( G , 0 , n*sizeof ( point * ) );
n=0;
}
bool cmp ( int x , int y ) { return x>y; }
int Df ( int x )
{
if ( G[x]==0 ) return 1;
int v[F[x]],i=0;
for ( point *p=G[x] ; p ; p=p->l ) v[i++] = Df (p->v);
sort ( v, v+F[x] , cmp );
v[0]++;
for ( i=1 ; i<F[x] ; i++ )
if ( v[0]<v[i]+i+1 ) v[0]=v[i]+i+1;
return v[0];
}
int main ()
{
int t;
freopen ( "zvon.in" , "r" , stdin );
freopen ( "zvon.out" , "w" , stdout );
for ( scanf ( "%d" , &t ); t ; t-- ) {
ReadTest ();
printf ( "%d\n" , Df (0)-1 );
CleanUp ();
}
fclose ( stdin );
fclose ( stdout );
return 0;
}