Pagini recente » Cod sursa (job #1129254) | Cod sursa (job #2829323) | Cod sursa (job #1080663) | Cod sursa (job #2471310) | Cod sursa (job #105381)
Cod sursa(job #105381)
#include <stdio.h>
#include <stdlib.h>
FILE *f,*g;
#define InFile "zvon.in"
#define OutFile "zvon.out"
int t;
long v[100000],a[100000],w[100000],l[100000],n;
void rec(long nod,long t)
{long i;
v[nod]=t;
for(i=w[nod];i<w[nod]+l[nod];i++)
rec(a[i],t+1);
}
int sortf(const void*a, const void*b)
{
long *x,*y;
x=(long*)a;
y=(long*)b;
return l[*x]<l[*y];
}
int main()
{int ww;
long j,x,y,i,max=0;
f=fopen("zvon.in","r");
g=fopen("zvon.out","w");
fscanf(f,"%d",&t);
for(ww=1;ww<=t;ww++)
{
fscanf(f,"%ld",&n);
if(n==1){fprintf(g,"%d%s",0,"\n");continue;}
for(j=1;j<=n;j++)v[i]=a[i]=w[i]=l[i]=0;
w[0]=1;
for(j=1;j<n;j++)
{
fscanf(f,"%ld%ld",&x,&y);
if(!w[x])w[x]=w[max]+l[max];
if(x>max)max=x;
l[x]++;
a[w[x]+l[x]-1]=y;
}
// for(i=1;i<=n;i++)cout<<a[i]<<' ';cout<<'\n';cout<<'\n'<<'\n';
// for(i=1;i<=n;i++)cout<<i<<' '<<w[i]<<' '<<l[i]<<'\n';
// cout<<"\n\n\n\n\n";
for(i=1;i<=n;i++)
if(l[i])qsort(a+w[i],l[i],sizeof(a[0]),sortf);
// for(i=1;i<=n;i++)cout<<a[i]<<' ';cout<<'\n';cout<<'\n'<<'\n';
// for(i=1;i<=n;i++)cout<<i<<' '<<w[i]<<' '<<l[i]<<'\n';
rec(1,1);
max=v[1];
for(i=1;i<=n;i++)
if(v[i]>max)max=v[i];
fprintf(g,"%ld%s",max,"\n");
}
fclose(f);
fclose(g);
return 0;
}