Pagini recente » Cod sursa (job #2476196) | Cod sursa (job #1244445) | Cod sursa (job #1737053) | Cod sursa (job #769868) | Cod sursa (job #1706091)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
#define N_MAX 100000
vector<int> sub[N_MAX + 1];
bool cmpDupaSubordonati(int s1, int s2){
return sub[s1].size() < sub[s2].size();
}
void citire(int &n, ifstream &f){
f >> n;
for(int i = 1; i < n; ++i){
int x, y;
f >> x >> y;
sub[x].push_back(y);
}
}
int timpMinim(int i){
if(sub[i].empty())
return 0;
vector<int> timpi;
for(int s : sub[i]){
timpi.push_back(timpMinim(s));
}
sort(timpi.begin(), timpi.end());
int maxim = -1;
int intarziere = sub[i].size();
for(int s : timpi){
s += intarziere;
if(s > maxim)
maxim = s;
--intarziere;
}
return maxim;
}
int main()
{
ios::sync_with_stdio(false);
ifstream fin("zvon.in");
ofstream fout("zvon.out");
int t;
fin >> t;
while(t--){
int n;
citire(n, fin);
fout << timpMinim(1)<< "\n";
for(int i = 1; i <= n; ++i)
sub[i].clear();
}
return 0;
}