Pagini recente » Cod sursa (job #3203322) | Cod sursa (job #2558231) | Cod sursa (job #2276107) | Cod sursa (job #2141862) | Cod sursa (job #98700)
Cod sursa(job #98700)
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
#define NMAX 100010
int N;
vector <int> leg[NMAX];
vector <int> jeg[NMAX];
int din[NMAX];
inline int MAX(int a, int b) { return (a > b) ? a : b; }
int cmp(int a, int b) { return a > b; }
void calc(int x)
{
din[x] = 0;
for (vector <int> :: iterator it = leg[x].begin(); it != leg[x].end(); ++it) {
calc(*it);
jeg[x].push_back(din[*it]);
}
sort(jeg[x].begin(), jeg[x].end(), cmp);
int i = 1;
for (vector <int> :: iterator it = jeg[x].begin(); it != jeg[x].end(); it++, i++) {
din[x] = MAX(din[x], *it + i);
}
}
int main()
{
int T, i, x, y;
freopen("zvon.in", "r", stdin);
freopen("zvon.out", "w", stdout);
for (scanf("%d", &T); T; --T) {
scanf("%d", &N);
for (i = 0; i < NMAX; i++) leg[i].clear();
for (i = 0; i < NMAX; i++) jeg[i].clear();
for (i = 1; i < N; i++) {
scanf("%d %d", &x, &y);
leg[x].push_back(y);
}
calc(1);
printf("%d\n", din[1]);
}
return 0;
}