Cod sursa(job #2698045)

Utilizator WilIiamperWilliam Damian Balint WilIiamper Data 20 ianuarie 2021 18:56:29
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#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;
}