#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int>>M[200001];
int id[200001];
int dp[200001];
bool biju[200001];
DFS(int v)
{
biju[v]=1;
for(auto c : M[v])
{
if(biju[c.first]!=1)
{
if(id[v]<=c.second&&id[v]!=0)
{
id[c.first]=c.second;
dp[c.first]=dp[v];
}
else
{
id[c.first]=c.second;
dp[c.first]=dp[v]+1;
}
DFS(c.first);
}
}
}
int main()
{
int n;
cin>>n;
for(int i=0; i<n; i++)
{
int m, a, b, mx=0;
cin>>m;
for(int l=1; l<=m-1; l++)
{
cin>>a>>b;
M[a].push_back({b, l});
M[b].push_back({a, l});
}
id[1]=0;
dp[1]=0;
DFS(1);
for(int l=1; l<=m; l++)
{
if(dp[l]>mx)
{
mx=dp[l];
}
}
cout<<mx<<'\n';
for(int l=1; l<=m; l++)
{
M[l].clear();
biju[l]=0;
dp[l]=0;
id[l]=0;
}
}
return 0;
}
437. Path Sum III | 436. Find Right Interval |
435. Non-overlapping Intervals | 406. Queue Reconstruction by Height |
380. Insert Delete GetRandom O(1) | 332. Reconstruct Itinerary |
368. Largest Divisible Subset | 377. Combination Sum IV |
322. Coin Change | 307. Range Sum Query - Mutable |
287. Find the Duplicate Number | 279. Perfect Squares |
275. H-Index II | 274. H-Index |
260. Single Number III | 240. Search a 2D Matrix II |
238. Product of Array Except Self | 229. Majority Element II |
222. Count Complete Tree Nodes | 215. Kth Largest Element in an Array |
198. House Robber | 153. Find Minimum in Rotated Sorted Array |
150. Evaluate Reverse Polish Notation | 144. Binary Tree Preorder Traversal |
137. Single Number II | 130. Surrounded Regions |
129. Sum Root to Leaf Numbers | 120. Triangle |
102. Binary Tree Level Order Traversal | 96. Unique Binary Search Trees |