Pagini recente » Cod sursa (job #2132551) | Cod sursa (job #1226212) | Cod sursa (job #2191652) | Cod sursa (job #2776861)
#include <algorithm>
#include <fstream>
#include <iostream>
#include <vector>
int df(int node, std::vector<std::vector<int>>& v) {
if (v[node].empty()) return 0;
std::vector<int> times;
for (int neigh : v[node]) times.push_back(df(neigh, v));
std::sort(times.begin(), times.end());
int sol = times.back();
for (int i = times.size() - 1; i >= 0; --i) {
if (sol < times[i] + times.size() - i) sol = times[i] + times.size() - i;
}
return sol;
}
int main()
{
std::ifstream in("zvon.in");
std::ofstream out("zvon.out");
int t;
in >> t;
for (int test = 1; test <= t; ++test) {
int n;
in >> n;
std::vector<std::vector<int>> v(n + 1);
for (int i = 1; i <= n - 1; ++i) {
int a, b;
in >> a >> b;
v[a].push_back(b);
}
out << df(1, v) << std::endl;
}
return 0;
}