Pagini recente » Cod sursa (job #178619) | Cod sursa (job #1268998) | Cod sursa (job #1748963) | Cod sursa (job #2551294) | Cod sursa (job #151811)
Cod sursa(job #151811)
#include <cstdio>
#include <algorithm>
#include <vector>
#define v 100010
using namespace std;
int n,t,d[v];
vector <int> w[v];
vector <int> q[v];
int comp(int a, int b)
{
return a > b;
}
void rezolvare(int x)
{
d[x] = 0;
for (vector <int>::iterator it=w[x].begin(); it!=w[x].end(); ++it)
{
rezolvare(*it);
q[x].push_back(d[*it]);
}
sort(q[x].begin(), q[x].end(), comp);
int i=1;
for (vector <int>::iterator it=q[x].begin(); it!=q[x].end(); it++, i++)
{
if (*it+i>d[x])
d[x]=*it+i;
}
}
int main()
{
int x,y;
freopen("zvon.in", "r", stdin);
freopen("zvon.out", "w", stdout);
scanf("%d", &t);
for (int i=1; i<=t; i++)
{
scanf("%d", &n);
for (int i=0; i<v; i++)
{
w[i].clear();
q[i].clear();
}
for (int i=1; i<n; i++)
{
scanf("%d%d", &x, &y);
w[x].push_back(y);
}
rezolvare(1);
printf("%d\n", d[1]);
}
return 0;
}