Pagini recente » Cod sursa (job #2940524) | Cod sursa (job #2668747) | Cod sursa (job #1039720) | Cod sursa (job #1106959) | Cod sursa (job #1615548)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin ("zvon.in");
ofstream fout ("zvon.out");
vector < vector <int> > edge;
vector <int> DP;
int N, K, T;
void DFS (int node)
{
for (int i = 0; i < edge[node].size(); ++i)
DFS(edge[node][i]);
vector <int> to;
for (int i = 0; i < edge[node].size(); ++i)
to.push_back(DP[edge[node][i]]+ 1);
sort(to.begin(),to.end());
for (int i = to.size() - 1; i >= 0; --i)
DP[node] = max(DP[node],(int) (to[i] + to.size() - 1 - i));
}
int main()
{
fin >>T;
for (int i = 1; i <= T; ++i)
{
fin >>N;
DP.clear();
DP.resize(N+1);
edge.clear();
edge.resize(N+1);
for (int j = 1; j < N; ++j)
{
int x,y;
fin >>x >>y;
edge[x].push_back(y);
}
DFS(1);
if (N == 1)
DP[1] = 0;
fout <<DP[1] <<'\n';
}
return 0;
}