Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/anaoanea | Cod sursa (job #2698045)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("darb.in");
ofstream fout ("darb.out");
int n, sol, dist[100001];
vector < int > arb[100001];
void DFS ( int node, int len ) {
dist[ node ] = len;
for ( unsigned int l = 0; l < arb[node].size(); l++ ) {
int to = arb[node][l];
if ( !dist[to] )
DFS ( to, len+1 );
}
}
void solve () {
DFS (1, 1);
int Max = 1;
for ( int i = 1; i <= n; i++ ) {
if ( dist[ Max ] < dist[i] )
Max = i;
}
for ( int i = 1; i <= n; i++ )
dist[i] = 0;
DFS ( Max, 1 );
for ( int i = 1; i <= n; i++ )
sol = max ( dist[i], sol );
}
void read () {
fin >> n;
int from, to;
for ( int i = 1; i < n; i++ ) {
fin >> from >> to;
arb[ from ].push_back ( to );
arb[ to ].push_back( from );
}
}
int main()
{
read ();
solve ();
fout << sol;
return 0;
}