Pagini recente » Cod sursa (job #2861727) | Cod sursa (job #2033363) | Cod sursa (job #3276085) | Cod sursa (job #1158904) | Cod sursa (job #2249497)
#include <fstream>
#include <iostream>
#include <vector>
#include <queue>
#include <utility>
#include <cstring>
#include <algorithm>
using namespace std;
vector<int> angs[100010];
int angajati;
bool compar(int a, int b) {
return a > b;
}
int get_num(int node) {
vector<int> values;
for (size_t i = 0; i < angs[node].size(); i++)
values.push_back(get_num(angs[node][i]));
if (! values.empty()) {
sort(values.begin(), values.end(), compar);
for (size_t i = 0; i < angs[node].size(); i++)
values[i] += i + 1;
sort(values.begin(), values.end(), compar);
return values[0];
}
return 0;
}
int main(int argc, char** argv) {
ifstream fi("zvon.in");
ofstream fo("zvon.out");
int teste;
int angajati;
fi >> teste;
for (int i = 0; i < teste; ++i) {
fi >> angajati;
if (angajati > 1) {
int x, y;
memset(angs, 0, sizeof(angs));
for (int j = 0; j < angajati - 1; ++j) {
fi >> x >> y;
angs[x - 1].push_back(y - 1);
}
fo << get_num(0) << "\n" ;
} else {
fo << "0\n" << flush;
}
}
return 0;
}