Pagini recente » Cod sursa (job #1047695) | Cod sursa (job #2611813) | Cod sursa (job #1646791) | Cod sursa (job #3145462) | Cod sursa (job #101234)
Cod sursa(job #101234)
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
#define nm 100010
int n, i, x, y, sol;
int a[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);
}
}
void dfs(int p)
{
int i, mx = 0, pmx = 0;
if (v[p].size() == 0)
{
a[p] = 0;
}
for (i=0; i<v[p].size(); ++i)
{
dfs(v[p][i]);
if (mx == a[v[p][i]])
pmx ++;
if (mx < a[v[p][i]])
{
mx = a[v[p][i]];
pmx = 1;
}
}
if (v[p].size() != 0)
{
a[p] = mx + v[p].size()-1;
if (pmx > 1)
{
a[p] = mx + v[p].size()-1 + 1;
}
if (mx == 0)
a[p] = v[p].size();
if (v[p].size() == 1)
{
a[p] = mx + 1;
}
}
}
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;
}