Pagini recente » Cod sursa (job #376238) | Cod sursa (job #2192029) | Cod sursa (job #979249) | Cod sursa (job #3282544) | Cod sursa (job #101129)
Cod sursa(job #101129)
#include <cstdio>
#include <vector>
using namespace std;
#define MAX(a,b) (((a)>(b))?(a):(b))
#define NMAX 100002
int N, Case;
int V[NMAX], G[NMAX];
char Viz[NMAX];
vector<int> A[NMAX];
void init()
{
int i, j;
for (i = 0; i <= N; i++)
{
A[i].clear();
V[i] = ' '; Viz[i] = G[i] = 0;
}
}
void read()
{
int i, j, k;
scanf("%d", &N);
for (k = 1; k < N; k++)
{
scanf("%d%d", &i, &j);
A[i].push_back(j); G[i]++;
}
}
void dfs(int i)
{
int j, k, poz, max, m = G[i], f;
for (j = 0; j < m; j++) dfs(A[i][j]);
for (j = 0; j < m; j++) Viz[A[i][j]] = '0';
for (j = 0, V[i] = 0; j < m; j++)
{
max = 0; poz = 0;
for (k = 0; k < m; k++)
{
f = A[i][k];
if (Viz[ f ]=='0' && max<=V[ f ])
max = V[ f ], poz = f;
}
V[i] = MAX(V[i],max+j+1);
Viz[poz] = '1';
}
}
void solve()
{
dfs(1);
printf("%d\n", V[1]);
}
int main()
{
freopen("zvon.in", "r", stdin);
freopen("zvon.out", "w", stdout);
scanf("%d", &Case);
while (Case--)
{
read();
solve();
init();
}
return 0;
}