Pagini recente » Cod sursa (job #1379428) | Cod sursa (job #8970) | Cod sursa (job #2679139) | Cod sursa (job #1669827) | Cod sursa (job #102611)
Cod sursa(job #102611)
#include <stdio.h>
#include <string.h>
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;
}
int Df ( int x )
{
int v,min=0x3f3f3f,max=0;
if ( G[x] == 0 ) min =0;
for ( point *p=G[x] ; p ; p=p->l ) {
v = Df (p->v);
if ( v>max ) max=v;
if ( v<min ) min=v;
}
return (max+1>min+F[x])?(max+1):(min+F[x]);
}
int main ()
{
short t;
freopen ( "zvon.in" , "r" , stdin );
freopen ( "zvon.out" , "w" , stdout );
for ( scanf ( "%d" , &t ); t ; t-- ) {
ReadTest ();
printf ( "%d\n" , Df (0)-1 );
if (t-1) CleanUp ();
}
fclose ( stdin );
fclose ( stdout );
return 0;
}