Pagini recente » Cod sursa (job #333604) | Cod sursa (job #2223968) | Cod sursa (job #652271) | Cod sursa (job #862389) | Cod sursa (job #983608)
Cod sursa(job #983608)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
#define Nmax 100005
vector <int> timp(Nmax);
vector <int> G[Nmax];
struct cmp
{
bool operator()(const int &a, const int &b)
{
return timp[a] > timp[b];
}
};
void DFS( int node )
{
for ( unsigned i = 0; i < G[node].size(); ++i )
DFS( G[node][i] );
if ( G[node].empty() )
return;
timp[node] = 0;
sort( G[node].begin(), G[node].end(), cmp() );
for ( unsigned i = 0; i < G[node].size(); ++i )
timp[node] = max( timp[node], timp[ G[node][i] ] + int(i) + 1 );
}
int T, N;
int main()
{
ifstream f("zvon.in");
ofstream g("zvon.out");
f >> T;
for ( ; T; T-- )
{
f >> N;
for ( int i = 1, a, b; i < N; ++i )
{
f >> a >> b;
G[a].push_back( b );
}
DFS( 1 );
g << timp[1] << "\n";
for ( int i = 1; i <= N; ++i )
G[i].clear();
}
f.close();
g.close();
return 0;
}