Pagini recente » Cod sursa (job #2283970) | Cod sursa (job #2781883) | Cod sursa (job #2707772) | Cod sursa (job #2664169) | Cod sursa (job #2393563)
#include <bits/stdc++.h>
#define maxN 100002
using namespace std;
FILE *fin = freopen("zvon.in", "r", stdin);
FILE *fout = freopen("zvon.out", "w", stdout);
int T, n;
int dp[maxN];
vector < int > sons[maxN];
void init()
{
for (int i = 0; i < n; ++ i)
{
dp[i] = 0;
sons[i].clear();
}
}
void readTree()
{
for (int i = 1; i < n; ++ i)
{
int u, v;
scanf("%d%d", &u, &v);
-- u;
-- v;
sons[u].push_back(v);
}
}
int cmp(int a, int b)
{
if (dp[a] == dp[b]) return a < b;
return dp[a] < dp[b];
}
void dfs(int nod)
{
for (int son : sons[nod])
dfs(son);
int len = sons[nod].size();
if (!len)
{
dp[nod] = 0;
return ;
}
sort(sons[nod].begin(), sons[nod].end(), cmp);
for (int i = 0; i < len; ++ i)
dp[nod] = max(dp[sons[nod][i]] + len - i, dp[nod]);
}
int main()
{
scanf("%d", &T);
while (T --)
{
scanf("%d", &n);
init();
readTree();
dfs(0);
printf("%d\n", dp[0]);
}
return 0;
}