Cod sursa(job #1093859)

Utilizator Teodor94Teodor Plop Teodor94 Data 28 ianuarie 2014 18:21:04
Problema Diametrul unui arbore Scor Ascuns
Compilator cpp Status done
Runda Marime 0.97 kb
#include <cstdio>
#include <vector>
#include <cstring>

using namespace std;

#define MAX_N 100000

vector< int > v[MAX_N];
bool marked[MAX_N];
int 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 );
        --x, --y;

        v[x].push_back( y );
        v[y].push_back( x );
    }
}

void dfs( int node, int dist ) {
    if ( dist > ans )
        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 );
    marked[node] = false;
}

int main() {
    FILE *fin, *fout;

    fin = fopen( "darb.in", "r" );
    int n;
    read( fin, n );
    fclose( fin );

    for ( int i = 0; i < n; ++i )
        dfs( i, 0 );

    fout = fopen( "darb.out", "w" );
    fprintf( fout, "%d\n", ans + 1 );
    fclose( fout );
}