Pagini recente » Cod sursa (job #2245214) | Cod sursa (job #586765) | Cod sursa (job #1578359) | Cod sursa (job #316512) | Cod sursa (job #481998)
Cod sursa(job #481998)
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
FILE* fin = fopen("zvon.in", "r");
FILE* fout = fopen("zvon.out", "w");
#define MAX(a,b) (((a) > (b)) ? (a) : (b));
#define MAXN 100050
vector<int> f[MAXN];
typedef vector<int>::iterator iter;
typedef vector<int>::reverse_iterator riter;
int doComp(int n){
vector<int> tv;
for(iter it = f[n].begin(); it != f[n].end(); ++it){
tv.push_back(doComp(*it));
}
if(tv.empty()){
return 0;
}
sort(tv.begin(), tv.end());
int mv = 0, i = 1;
for(riter it = tv.rbegin(); it != tv.rend(); ++it, ++i){
mv = MAX(mv, *it + i);
}
return mv;
}
int doTest(){
int n;
fscanf(fin, "%d ", &n);
for(int i = 1; i <= n; ++i){
f[i].clear();
}
for(int i = 0, x, y; i < n-1; ++i){
fscanf(fin, "%d %d\n", &x, &y);
f[x].push_back(y);
}
return doComp(1);
}
int main(){
int t;
fscanf(fin, "%d\n", &t);
while(t--){
fprintf(fout, "%d\n", doTest());
}
fclose(fin);
fclose(fout);
return EXIT_SUCCESS;
}