Pagini recente » Cod sursa (job #814574) | Cod sursa (job #272172) | Cod sursa (job #2418278) | Cod sursa (job #2052019) | Cod sursa (job #98329)
Cod sursa(job #98329)
using namespace std;
#include <cstdio>
#include <string>
#include <cassert>
#include <vector>
#include <algorithm>
#define FIN "zvon.in"
#define FOUT "zvon.out"
#define NMAX 100001
#define INF 0x3f3f3f3f
#define pb push_back
vector <int> fi[NMAX];
int N, Nf[NMAX], s[NMAX], vec[NMAX];
int cmp (const int a, const int b)
{
return vec[a] >= vec[b];
}
void df (int nod)
{
int i;
for (i = 0; i < Nf[nod]; ++ i)
{
df (fi[nod][i]);
vec[i] = s[fi[nod][i]];
}
sort (vec, vec + Nf[nod], cmp);
for (i = 0; i < Nf[nod]; ++ i)
if (s[nod] <= vec[i] + i + 1)
s[nod] = vec[i] + i + 1;
}
void read ()
{
int T, i, x, y;
scanf ("%d\n", &T);
while (T--)
{
memset (s, 0, sizeof (s));
memset (Nf, 0, sizeof (Nf));
scanf ("%d\n", &N);
if (N <= 1)
{
printf ("%d\n", 0);
continue;
}
for (i = 1; i < N; ++ i)
{
scanf ("%d %d\n", &x, &y);
fi[x].pb (y);
++ Nf[x];
}
df (1);
printf ("%d\n", s[1]);
}
}
int
main ()
{
freopen (FIN, "rt", stdin);
freopen (FOUT, "wt", stdout);
read ();
return 0;
}