Pagini recente » Cod sursa (job #745346) | Cod sursa (job #1857250) | Cod sursa (job #1535293) | Cod sursa (job #3140405) | Cod sursa (job #2151433)
#include <bits/stdc++.h>
using namespace std;
const int jmekerie_mare = 100005;
int numaru, zvonuri;
vector<int> clanu[jmekerie_mare];
int versace[jmekerie_mare];
inline bool locu1(const int cioara1, const int cioara2) {
return versace[cioara1] > versace[cioara2];
}
void zvoneste(int zvoner) {
for (auto receptac: clanu[zvoner]) {
zvoneste(receptac);
if (clanu[zvoner].size() != 0) {
sort(clanu[zvoner].begin(), clanu[zvoner].end(), locu1);
for (int i = 0; i < clanu[zvoner].size(); i++) {
versace[zvoner] = max(versace[zvoner], versace[clanu[zvoner][i]] + i + 1);
}
}
}
}
int main() {
//freopen("carici.in", "r", stdin);
freopen("zvon.in", "r", stdin);
freopen("zvon.out", "w", stdout);
scanf("%d", &zvonuri);
while (zvonuri--) {
scanf("%d", &numaru);
if (numaru == 1) {
cout << "0\n";
continue;
}
for (int i = 0, cioara1, cioara2; i < numaru - 1; i++) {
scanf("%d%d", &cioara1, &cioara2);
clanu[cioara1].push_back(cioara2);
}
zvoneste(1);
cout << versace[1] << "\n";
for (int i = 1; i <= numaru; i++) {
clanu[i].clear();
versace[i] = 0;
}
}
return 0;
}