Pagini recente » Cod sursa (job #559893) | Cod sursa (job #2645933) | Cod sursa (job #2804778) | Cod sursa (job #1014870) | Cod sursa (job #1093854)
#include <cstdio>
#include <vector>
#include <cstring>
using namespace std;
#define MAX_N 100000
vector< int > v[MAX_N];
bool marked[MAX_N];
int leaf, ans;
void read( FILE *fin, int &n ) {
fscanf( fin, "%d", &n );
for ( int i = 1; i < n; ++i ) {
int x, y;
fscanf( fin, "%d%d", &x, &y );
v[x].push_back( y );
v[y].push_back( x );
}
}
void dfs( int node, int dist ) {
if ( dist > ans ) {
leaf = node;
ans = dist;
}
marked[node] = true;
for ( vector< int >::iterator it = v[node].begin(); it != v[node].end(); ++it )
if ( !marked[*it] )
dfs( *it, dist + 1 );
}
int main() {
FILE *fin, *fout;
fin = fopen( "darb.in", "r" );
int n;
read( fin, n );
fclose( fin );
dfs( 1, 0 );
memset( marked, false, sizeof( marked ) );
ans = 0;
dfs( leaf, 0 );
fout = fopen( "darb.out", "w" );
fprintf( fout, "%d\n", ans + 1 );
fclose( fout );
}