Pagini recente » Cod sursa (job #1202253) | Cod sursa (job #194569) | Cod sursa (job #3040025) | Cod sursa (job #38068) | Cod sursa (job #91730)
Cod sursa(job #91730)
#include <stdio.h>
#include <string.h>
#include <vector>
using namespace std;
#define NMAX 100100
int nf[NMAX], tmin[NMAX], sel[NMAX];
vector<int> f[NMAX];
int i, j, k, N;
void df(int n)
{
int i, j, ff, max;
for (i = 0; i < nf[n]; i++)
df(f[n][i]);
tmin[n] = 0;
for (i = 0; i < nf[n]; i++)
sel[f[n][i]] = 0;
for (j = 1; j <= nf[n]; j++)
{
max = -1;
for (i = 0; i < nf[n]; i++)
if (!sel[f[n][i]] && tmin[f[n][i]] >= max)
max = tmin[f[n][i]],
ff = f[n][i];
if (max + j > tmin[n])
tmin[n] = max + j;
sel[ff] = 1;
}
}
int main()
{
int T;
freopen("zvon.in", "r", stdin);
freopen("zvon.out", "w", stdout);
scanf("%d", &T);
while (T--)
{
scanf("%d", &N);
memset(nf, 0, sizeof(nf));
memset(f, 0, sizeof(f));
for (i =1; i <= N; i++)
f[i].clear();
for (k = 1; k < N; k++)
{
scanf("%d %d", &i, &j);
f[i].push_back(j);
nf[i]++;
}
df(1);
printf("%d\n", tmin[1]);
}
return 0;
}