Cod sursa(job #2705333)

Utilizator vlad_butnaruVlad Butnaru vlad_butnaru Data 12 februarie 2021 13:29:28
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in ("darb.in");
ofstream out ("darb.out");
bool viz[100001];
vector <int> v[100001];
int dist[100001];
void dfs (int nod , int d)
{
    viz[nod] = 1;
    dist[nod] = d;
    for (auto i: v[nod])
        if (!viz[i])
            dfs(i, d+1);
}
int main ()
{
    int n;
    in>>n;
    for (int i = 1; i<=n; ++i)
    {
        int a,b;
        in >> a >> b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    dfs(1, 0);
    int max_dist = 0;
    int place = 1;
    for (int i = 1;i<=n;++i)
    {
        if (dist[i] > max_dist)
        {
            max_dist = dist[i];
            place = i;
        }
    }
    max_dist = 0;
    for (int i = 1;i<=n;++i)
        dist[i] = viz[i] = 0;
    dfs(place, 0);
    for (int i = 1; i<=n; ++i)
        max_dist = max (max_dist, dist[i]);
    out << max_dist + 1;
    return 0;
}