Pagini recente » Cod sursa (job #1157624) | Cod sursa (job #885914) | Cod sursa (job #1602994) | Cod sursa (job #1937809) | Cod sursa (job #193607)
Cod sursa(job #193607)
#include <cstdio>
#include <vector>
#include <algorithm>
#define IN "zvon.in"
#define OUT "zvon.out"
#define N_MAX 100001
#define pb push_back
using namespace std;
int T[N_MAX];
int n,teste;
vector< vector<int> > a(N_MAX);
bool comp (const int x, const int y)
{
if(T[x]>T[y])
return 1;
return 0;
}
void scan()
{
freopen(IN, "r",stdin);
freopen(OUT, "w",stdout);
scanf("%d", &teste);
}
void df(int x)
{
int y;
int l=a[x].size();
for(int i=0;i<l;++i)
{
y=a[x][i];
df(y);
}
l=a[x].size();
sort(a[x].begin(),a[x].end(), comp);
for(int i=0;i<l;++i)
{
y=a[x][i];
T[x]=max(T[x],i+1+T[y]);
}
}
void solve()
{
for(int ti=1;ti<=teste;++ti)
{
int x,y;
scanf("%d", &n);
for(int i=1;i<=n;++i)
T[i]=0;
for(int i=1;i<n;++i)
{
scanf("%d%d", &x,&y);
a[x].pb(y);
}
df(1);
/*
for(int i=1;i<=n;++i)
{
int l=a[x].size();
for(int j=0;j<l;++j)
printf("%d ",a[i][j]);
printf("\n");
}
*/
for(int i=1;i<=n;++i)
a[i].erase(a[i].begin(),a[i].end());
printf("%d\n",T[1]);
}
}
int main()
{
scan();
solve();
return 0;
}