Cod sursa(job #2360542)

Utilizator SemetgTemes George Semetg Data 1 martie 2019 21:54:28
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#include <vector>
using namespace std;

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

const int N_MAX = 100005;

int N;
vector<int> a[N_MAX];
int dist[N_MAX];
int sol;

void read() {
    in >> N;
    
    for (int i = 1; i < N; ++i) {
        int x, y;
        in >> x >> y;
        
        a[x].push_back(y);
        a[y].push_back(x);
    }
}

void dfs(int node) {
    for (int i = 0; i < int(a[node].size()); ++i)
        if (!dist[a[node][i]]) {
            dist[a[node][i]] = 1 + dist[node];
            if (dist[a[node][i]] > dist[sol])
                sol = a[node][i];
            
            dfs(a[node][i]);
        }
}

int main() {
    read();
    
    sol = 1;
    dist[1] = 1;
    dfs(1);
    
    for (int i = 1; i <= N; ++i)
        dist[i] = 0;
    
    dist[sol] = 1;
    dfs(sol);
    
    out << dist[sol];
}