Pagini recente » Cod sursa (job #1124737) | Cod sursa (job #106595) | Cod sursa (job #1122269) | Cod sursa (job #2585648) | Cod sursa (job #102508)
Cod sursa(job #102508)
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
int n;
vector<int> sub[100000];
int cache[100000];
int solve(int x) {
int& r = cache[x];
if (r >= 0) return r;
r = 0;
int i;
vector<int>& children = sub[x];
int c = children.size();
vector<int> sol(c);
for (i = 0; i < c; ++i)
sol[i] = solve(children[i]);
sort(sol.begin(), sol.end());
for (i = 0; i < c; ++i)
r = max(r, sol[i] + c - i);
return r;
}
int main() {
int i, j;
FILE* in = fopen("zvon.in","r");
FILE* out = fopen("zvon.out","w");
int tests; fscanf(in,"%d",&tests);
while (tests--) {
fscanf(in,"%d",&n);
for (i = 0; i < n; ++i) {
cache[i] = -1;
sub[i].clear();
}
int a, b;
for (i = 1; i < n; ++i) {
fscanf(in,"%d %d",&a,&b);
sub[a-1].push_back(b-1);
}
int r = 0;
for (i = 0; i < n; ++i)
r = max(r, solve(i));
fprintf(out,"%d\n",r);
}
}