Cod sursa(job #2541093)

Utilizator MarianConstantinMarian Constantin MarianConstantin Data 8 februarie 2020 09:20:21
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>
#define pb push_back

using namespace std;

ifstream fin("darb.in");
ofstream fout("darb.out");
const int MAXN = 100010;

int dist[MAXN], n, ma;
vector<int> graph[MAXN];

void read()
{
    fin >> n;
    for (int i = 0; i < n - 1; ++i) {
        int x, y;
        fin >> x >> y;
        graph[x].pb(y);
        graph[y].pb(x);
    }
}

void reset()
{
    for (int i = 1; i <= n; ++i)
        dist[i] = 0;
}

void dfs(int node, int fat)
{
    dist[node] = dist[fat] + 1;
    if (dist[ma] < dist[node])
        ma = node;
    for (const auto& it: graph[node])
        if (!dist[it])
            dfs(it, node);
}


int main()
{
    read();
    dfs(1, 1);
    reset();
    dfs(ma, ma);
    fout << dist[ma] << '\n';
    return 0;
}