Pagini recente » Cod sursa (job #1456728) | Cod sursa (job #2808512) | Cod sursa (job #2552001) | Cod sursa (job #496865) | Cod sursa (job #2541919)
#include <bits/stdc++.h>
#define Nmax 100005
#define nr first
#define pos second
using namespace std;
ifstream f("zvon.in");
ofstream g("zvon.out");
int N, T, ans;
int dp[Nmax], t[Nmax];
pair<int, int> v[Nmax];
vector<int> G[Nmax];
void DFS(int node) {
ans = max(ans, t[node]);
if (!G[node].empty()) {
int K = 0;
for (auto it : G[node])
++K, v[K].nr = dp[it], v[K].pos = it;
sort(v + 1, v + K + 1);
for (int i = K; i >= 1; --i)
t[v[i].pos] = t[node] + K - i + 1, DFS(v[i].pos);
}
}
void makeDP(int node) {
dp[node] = 1;
for (auto it : G[node]) {
makeDP(it);
dp[node] += dp[it];
}
}
int main()
{
f >> T;
for (int tt = 1; tt <= T; ++tt) {
f >> N;
for (int i = 1; i <= N; ++i)
dp[i] = t[i] = 0, G[i].clear();
for (int i = 1; i < N; ++i) {
int x, y;
f >> x >> y;
G[x].push_back(y);
}
makeDP(1);
ans = 0;
DFS(1);
g << ans << '\n';
}
return 0;
}