/*
I love you Rose
I hope you love me too
*/
#include<bits/stdc++.h>
using namespace std;
ifstream f("zvon.in");
ofstream g("zvon.out");
int t,a,b;
int n,ar[100003],v1[100002],mrkd[100002],mvs[100002];
vector<int>v[100003];
vector<int>vs[100003];
vector<int>ar2;
bool cmp(int a, int b)
{
return ar[a]>ar[b];
}
void dfs1(int nod)
{
ar[nod]=0;
int mm=v[nod].size();
if(mm==0){
ar[nod]=1;
return;
}
for(int i=0;i<mm;++i)
{
dfs1(v[nod][i]);
ar[nod]+=ar[v[nod][i]];
}
for(int i=0;i<mm;++i)
v1[i]=v[nod][i];
sort(v1,v1+mm,cmp);
for(int i=0;i<mm;++i)
vs[nod].push_back(v1[i]);
mvs[nod]=mm;
}
int dfs2()
{
int t=0;
int d=1;
while(d<n)
{
++t;
int prvs=d;
for(int i=0;i<prvs;++i)
if(mrkd[ar2[i]]+1<=mvs[ar2[i]]){
++d;
ar2.push_back(vs[ar2[i]][mrkd[ar2[i]]]);
++mrkd[ar2[i]];
}
}
return t;
}
int main()
{
f>>t;
for(;t;--t)
{
f>>n;
if(n==1){
g<<0<<'\n';
continue;
}
for(int i=1;i<=n;++i)
v[i].clear(),vs[i].clear();
memset(mrkd,0,100002);
ar2.clear();
for(int i=1;i<n;++i)
{
f>>a>>b;
v[a].push_back(b);
}
dfs1(1);
ar2.push_back(1);
g<<dfs2()<<'\n';
}
return 0;
}