Pagini recente » Istoria paginii runda/pregatire_oji_cls8-9/clasament | Istoria paginii utilizator/mihaela.bustan | Diferente pentru home intre reviziile 260 si 259 | Istoria paginii runda/pregatire2020 | Cod sursa (job #779519)
Cod sursa(job #779519)
#include <cstdio>
#include <vector>
#include <functional>
#include <algorithm>
using namespace std;
const int kMaxN = 100005;
vector<int> G[kMaxN];
int N, TMin[kMaxN];
void DFS(const int X) {
vector<int> T;
for (vector<int>::iterator Y = G[X].begin(); Y != G[X].end(); ++Y) {
DFS(*Y);
T.push_back(TMin[*Y]);
}
sort (T.begin(), T.end(), greater<int>());
for(int i = 0; i < T.size(); ++i)
TMin[X] = max(TMin[X], i+1+T[i]);
}
inline void Clear() {
for (int i = 1; i <= N; ++i)
G[i].clear(), TMin[i] = 0;
N = 0;
}
inline void Read() {
scanf("%d", &N);
for (int i = 1; i < N; ++i) {
int X, Y; scanf("%d %d", &X, &Y);
G[X].push_back(Y);
}
}
inline void Print() {
printf("%d\n", TMin[1]);
}
int main() {
freopen("zvon.in", "r", stdin);
freopen("zvon.out", "w", stdout);
int T; scanf("%d", &T);
for (; T; --T) {
Read();
DFS(1);
Print();
Clear();
}
return 0;
}