Cod sursa(job #1790733)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 28 octombrie 2016 17:45:01
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;
vector<vector<int>> G;
int dist[666013];
int best, N;

void DFS(int k) {
    if(dist[k] > dist[best])
        best = k;

    for(auto it : G[k])
        if(!dist[it]) {
            dist[it] = dist[k] + 1;
            DFS(it);
        }
}

int main()
{
    freopen("darb.in","r",stdin);
    freopen("darb.out","w",stdout);

    cin.sync_with_stdio(false);

    cin >> N;
    G.resize(N+1);
    for(int i = 1; i < N; ++i){
        int a,b;
        cin >> a >> b;
        G[a].push_back(b);
        G[b].push_back(a);
    }
    best = 1;

    dist[best] = 1;
    DFS(best);

    memset(dist, 0,sizeof(dist));
    dist[best] = 1;
    DFS(best);
    cout << dist[best];

    return 0;
}