Pagini recente » Cod sursa (job #3164242) | Cod sursa (job #2890027) | Cod sursa (job #725704) | Cod sursa (job #1157251) | Cod sursa (job #107245)
Cod sursa(job #107245)
using namespace std;
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define Nm 100001
#define max(a,b) ((a)>(b)?(a):(b))
int *G[Nm],D[Nm],A[Nm],B[Nm],M[Nm],n;
void read()
{
char S[13];
int i,j;
scanf("%d ",&n);
memset(D,0,sizeof(D));
for(i=1;i<n;++i)
{
gets(S);
for(A[i]=j=0;S[j]!=' ';++j)
A[i]=A[i]*10+S[j]-'0';
for(B[i]=0,++j;S[j];++j)
B[i]=B[i]*10+S[j]-'0';
++D[A[i]];
}
}
bool cmp(int a, int b)
{
return M[a]>M[b];
}
void DFS(int x)
{
if(!D[x])
M[x]=0;
int i;
for(i=0;i<D[x];++i)
DFS(G[x][i]);
sort(G[x],G[x]+D[x],cmp);
for(M[x]=i=0;i<D[x];++i)
M[x]=max(M[x],M[G[x][i]]+i+1);
}
void solve()
{
int i;
for(i=1;i<=n;++i)
G[i]=(int*)malloc(D[i]*sizeof(int));
memset(D,0,sizeof(D));
for(i=1;i<n;++i)
G[A[i]][D[A[i]]++]=B[i];
DFS(1);
for(i=1;i<=n;++i)
free(G[i]);
}
int main()
{
int t;
freopen("zvon.in","r",stdin);
freopen("zvon.out","w",stdout);
scanf("%d",&t);
while(t--)
{
read();
solve();
printf("%d\n",M[1]);
}
return 0;
}