Mai intai trebuie sa te autentifici.
Cod sursa(job #983597)
Utilizator | Data | 12 august 2013 13:01:46 | |
---|---|---|---|
Problema | Zvon | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.07 kb |
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
#define Nmax 100005
vector <unsigned> time(Nmax);
vector <int> G[Nmax];
inline int cmp( const int &a, const int &b )
{
return time[a] > time[b];
}
void DFS( int node )
{
for ( unsigned i = 0; i < G[node].size(); ++i )
DFS( G[node][i] );
if ( G[node].empty() )
return;
sort( G[node].begin(), G[node].end(), cmp );
for ( unsigned i = 0; i < G[node].size(); ++i )
time[node] = max( time[node], time[ G[node][i] ] + 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 << time[1] << "\n";
time.clear();
for ( int i = 1; i <= N; ++i )
G[i].clear();
}
f.close();
g.close();
return 0;
}