Cod sursa(job #2322528)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 17 ianuarie 2019 21:00:25
Problema Diametrul unui arbore Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>
#define pb push_back
#define sz size()
using namespace std ;

const int NR = 100001 ;

ifstream f ("darb.in") ;
ofstream g ("darb.out") ;

vector < int > v [ NR ] ;
vector < bool > viz ( NR , false ) ;

int dfs ( int nod )
{
    viz [ nod ] = true ;
    int maxim = 0 ;
    for ( size_t i = 0 ; i < v [ nod ].sz ; ++ i )
        if ( !viz [ v[ nod ][ i ] ] )  maxim =  max ( maxim , dfs ( v [ nod ][ i ] ) ) ;
    return maxim + 1 ;

}

int main ()
{
    int n ; f >> n ;
    for ( int i = 1 ; i <  n ; ++ i )   { int x , y ; f >> x >> y ; v [ x ].pb ( y ) , v [ y ].pb ( x ) ; }

    int max1 = 0 , max2 = 0 ;
    viz [ 1 ] = true ;
    for( size_t i = 0 ; i < v [ 1 ].sz ; ++ i )
    {
        int dist = dfs ( v [ 1 ][ i ] ) ;
        if ( dist > max1 )  max2 = max1 , max1 = dist ;
        else
        {
            if ( dist > max2 )  max2 = dist ;
        }
    }
    return g << 1 + max1 + max2 << "\n" , 0 ;

}