Pagini recente » Cod sursa (job #1399606) | Cod sursa (job #250611) | Cod sursa (job #2234276) | Cod sursa (job #2453055) | Cod sursa (job #100457)
Cod sursa(job #100457)
#include <cstdio>
#include <vector>
#include <algorithm>
#define MaxN 100100
using namespace std;
int n, t[MaxN], c[MaxN], sol[MaxN], cost[MaxN];
vector<int> vec[MaxN];
char ok[MaxN];
void solve(){
int i, j=0, nr=1;
scanf("%d", &n);
memset(ok, 0, n);
for (i=0; i<n; i++)
vec[i].clear();
for (i=1; i<n; i++){
int a, b;
scanf("%d %d", &a, &b);
t[b-1] = a-1;
vec[a-1].push_back(b-1);
}
ok[0]=1;
while (j<nr){
int k = c[j++];
for (i=vec[k].size(); i--;)
if (!ok[vec[k][i]])
ok[vec[k][i]] = 1, c[nr++]=vec[k][i];
}
memset(sol, 0, 4*n);
for (i=n; i--;){
int k = c[i];
if (!vec[k].size()) continue;
int nr=0;
for (j=vec[k].size(); j--;)
cost[nr++]=sol[vec[k][j]]+1;
sort(cost, cost+nr);
reverse(cost, cost+nr);
for (j=0; j<nr; j++)
if (cost[j]+j>sol[k]) sol[k] = cost[j]+j;
}
printf("%d\n", sol[0]);
}
int main()
{
freopen("zvon.in", "r", stdin);
freopen("zvon.out", "w", stdout);
int tst;
scanf("%d", &tst);
while (tst--) solve();
}