Pagini recente » Cod sursa (job #3262140) | Cod sursa (job #2521973) | Cod sursa (job #2823355) | Cod sursa (job #10433) | Cod sursa (job #2705792)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream fin("zvon.in");
ofstream fout("zvon.out");
vector<int> G[NMAX];
int dp[NMAX], lg[NMAX];
inline void COUNTA(int nod, int tata)
{
for(auto it: G[nod])
if(it != tata)
{
COUNTA(it, nod);
lg[nod] += lg[it];
}
if(G[nod].size() == 1)
lg[nod] = 1;
}
inline void DFS(int nod, int tata)
{
vector<pair<int, int > > vec;
for(auto it: G[nod])
if(it != tata)
vec.push_back({lg[it], it});
sort(vec.begin(), vec.end(), greater<pair<int, int> >());
int cnt = 1;
for(auto it: vec)
{
int nd = it.second;
DFS(nd, nod);
dp[nod] = max(dp[nod], dp[nd] + cnt);
++cnt;
}
}
int main()
{
int t;
fin >> t;
while(t--)
{
int n;
fin >> n;
for(int i = 1; i < n; ++i)
{
int x, y;
fin >> x >> y;
G[x].emplace_back(y);
}
COUNTA(1, 0);
DFS(1, 0);
fout << dp[1] << '\n';
for(int i = 1; i <= n; ++i)
dp[i] = 0, G[i].clear(), lg[i] = 0;
}
return 0;
}