#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define N 100010
using namespace std;
ifstream f("zvon.in");
ofstream g("zvon.out");
vector<int> vec[N];
int viz[N],deq[N],i,j,t,n,m,k,v[N],x,y,rez,par[N];
bool comp(int a,int b)
{
return deq[a]>deq[b];
}
void dfs(int nod)
{
deq[nod]=0;
for(int t=0;t<vec[nod].size();t++)
{
dfs(vec[nod][t]);
}
sort(vec[nod].begin(),vec[nod].end(),comp);
for(int t=0;t<vec[nod].size();t++)
{
deq[nod]=max(deq[nod],deq[vec[nod][t]]+t+1);
}
}
int main()
{
f>>t;
while(t!=0)
{
f>>n;
if(n==1)
g<<0;
else
{
for(i=1;i<=n;i++)
vec[i].clear();
for(i=1;i<n;i++)
{
f>>x>>y;
vec[x].push_back(y);
}
dfs(1);
g<<deq[1];
}
t--;
g<<"\n";
}
}