Pagini recente » Istoria paginii utilizator/sofeiandrei | Istoria paginii utilizator/petrutg | Diferente pentru utilizator/negan intre reviziile 6 si 5 | Profil Open | Cod sursa (job #2017029)
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
ifstream in("zvon.in");
ofstream out("zvon.out");
vector<int>h[100050];
int solve( int nod, int tata ){
if( h[nod].size() == 0 ){
return 0;
}
vector<int> vec;
for( int i = 0; i < h[nod].size(); i ++ ){
if( h[nod][i] != tata )
vec.push_back( solve( h[nod][i], nod ));
}
sort( vec.begin(), vec.end() );
int k = 0;
int rez = 0;
for( int i = vec.size()-1; i >= 0; i -- ){
k ++;
vec[i] += k;
rez = max( rez, vec[i] );
}
return rez;
}
int g,t,n,a,b;
int main(){
in >> t;
for( g = 1; g <= t; g ++ ){
in >> n;
for( int i = 1; i < n; i ++ ){
in >> a >> b;
h[a].push_back(b);
}
out<<solve( 1,-1 )<<"\n";
for( int i = 1; i <= n; i ++ ){
h[i].clear();
}
}
return 0;
}