Pagini recente » Cod sursa (job #61742) | Cod sursa (job #2369306) | Cod sursa (job #1317730) | Cod sursa (job #1144215) | Cod sursa (job #98367)
Cod sursa(job #98367)
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], viz[NMAX];
void df (int nod)
{
int i, j, Max, temp;
s[nod] = 0;
for (i = 0; i < Nf[nod]; ++ i)
df (fi[nod][i]);
for (i = 0; i < Nf[nod]; ++ i)
viz[fi[nod][i]] = 0;
for (j = 1; j <= Nf[nod]; ++ j)
{
Max = 0;
for (i = 0; i < Nf[nod]; ++ i)
if (!viz[fi[nod][i]] && Max <= s[fi[nod][i]])
{
Max = s[fi[nod][i]];
temp = fi[nod][i];
}
if (s[nod] <= Max + j)
s[nod] = Max + j;
viz[temp] = 1;
}
}
void read ()
{
int T, i, x, y;
scanf ("%d\n", &T);
while (T--)
{
memset (Nf, 0, sizeof (Nf));
for (i = 1; i <= N; ++ i)
fi[i].clear();
scanf ("%d\n", &N);
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;
}