Pagini recente » Monitorul de evaluare | Cod sursa (job #1075744) | Cod sursa (job #1572362) | Statistici Radu Calin (calinradu05) | Cod sursa (job #606774)
Cod sursa(job #606774)
# include <algorithm>
# include <cstdio>
# include <vector>
using namespace std;
const char *FIN = "zvon.in", *FOU = "zvon.out";
const int MAX = 100005;
int T, N;
vector <int> G[MAX], A[MAX];
inline void getmax (int &a, int b) {
a = a > b ? a : b;
}
int dfs (int K) {
int sol = 0;
for (vector <int> :: iterator i = G[K].begin (); i != G[K].end (); ++i)
A[K].push_back (dfs (*i));
sort (A[K].begin (), A[K].end ());
for (size_t i = 0; i < A[K].size (); ++i)
getmax (sol, A[K][i] + (A[K].size () - i));
return sol;
}
int main (void) {
freopen (FIN, "r", stdin);
freopen (FOU, "w", stdout);
for (scanf ("%d", &T); T; --T) {
scanf ("%d", &N);
for (int i = 1, x, y; i < N; ++i) {
scanf ("%d %d", &x, &y);
G[x].push_back (y);
}
printf ("%d\n", dfs (1));
for (int i = 0; i < N; ++i)
if (G[i].size ()) {
G[i].clear (), A[i].clear ();
}
}
}