Cod sursa(job #2664161)

Utilizator ReksioCroftOctavian Florin Staicu ReksioCroft Data 28 octombrie 2020 02:56:34
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
#include <cassert>
#include <vector>

using namespace std;
const int nmax = 100001;
vector< int > v[nmax];
int nivelMax, nodMax;

void dfs( int nod, int tata, int nivel ) {
    if ( nivel > nivelMax ) {
        nivelMax = nivel;
        nodMax = nod;
    }
    for ( auto it = v[ nod ].begin(); it != v[ nod ].end(); it++ )
        if ( *it != tata )
            dfs( *it, nod, nivel + 1 );
}

int main() {
    int n;
    FILE *fin = fopen( "darb.in", "r" );
    assert( fscanf( fin, "%d", &n ) == 1 );
    for ( int i = 0; i < n - 1; i++ ) {
        int a, b;
        assert( fscanf( fin, "%d%d", &a, &b ) == 2 );
        v[ a ].push_back( b );
        v[ b ].push_back( a );
    }
    fclose( fin );
    dfs( 1, 0, 1 );
    dfs( nodMax, 0, 1 );
    FILE *fout = fopen( "darb.out", "w" );
    fprintf( fout, "%d\n", nivelMax );
    fclose( fout );
    return 0;
}