Cod sursa(job #2460839)

Utilizator andrei42Oandrei42O andrei42O Data 24 septembrie 2019 16:15:20
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
const int N = 100010;
vector <int> L[N];
int n, diametru, capat, l, niv[N];
void dfs(int);
int main()
{
    f >> n;
    for(int i=1; i<=n; i++)
    {
        int x, y;
        f >> x >> y;
        L[x].push_back(y);
        L[y].push_back(x);
    }
    niv[1]=1;
    dfs(1);
    diametru = 0;
    fill(niv + 1, niv + n + 1, 0);
    niv[capat]=1;
    dfs(capat);
    g << diametru;

    return 0;
}
void dfs(int nod)
{
    for(auto it: L[nod])
    {
        if(!niv[it])
        {
            niv[it] = niv[nod] + 1;
            if(niv[it] > diametru)
            {
                diametru = niv[it];
                capat = it;
            }
            dfs(it);
        }
    }
}