Pagini recente » Cod sursa (job #891113) | Cod sursa (job #495259) | Cod sursa (job #280591) | Cod sursa (job #2944919) | Cod sursa (job #107719)
Cod sursa(job #107719)
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
#define nm 100010
int n, i, x, y, sol, l;
int a[nm], u[nm], st[nm], sts[nm], X[nm];
vector <int> v[nm];
void read()
{
scanf("%d ", &n);
for (i=1; i<=n; ++i)
{
v[i].clear();
}
for (i=1; i<n; ++i)
{
scanf("%d %d ", &x, &y);
v[x].push_back(y);
}
}
inline int MAX(int a, int b)
{
return (a > b ? a : b);
}
int cmp(const int a, const int b)
{
return a > b;
}
void dfs(int p)
{
int i;
if (v[p].size() == 0)
{
a[p] = 0;
}
for (i=0; i<v[p].size(); ++i)
{
dfs(v[p][i]);
// x[i] = a[v[p][i]];
}
for (i=0; i<v[p].size(); ++i)
X[i] = a[v[p][i]];
if (v[p].size() != 0)
{
sort(X, X+v[p].size(), cmp);
for (i=0; i<v[p].size(); ++i)
{
a[p] = MAX(a[p], i+1 + X[i]);
}
}
}
void solve()
{
for (i=1; i<=n; ++i)
{
a[i] = 0;
}
dfs(1);
sol = a[1];
}
void write()
{
printf("%d\n", sol);
}
int main()
{
freopen("zvon.in", "r", stdin);
freopen("zvon.out","w",stdout);
int T;
scanf("%d ", &T);
for (; T>0; --T)
{
read();
solve();
write();
}
return 0;
}