Cod sursa(job #2642955)

Utilizator alexilasiAlex Ilasi alexilasi Data 17 august 2020 21:00:47
Problema Diametrul unui arbore Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <bits/stdc++.h>

using namespace std;

int last, n, ans;

int prez[300010];

vector <int> v[300010];
queue <int> q;

int main()
{
    cin >> n;
    for(int i=1; i<n; i++)
    {
        int x, y; cin >> x >> y;
        v[x].push_back(y);
        v[y].push_back(x);
    }

    q.push(1);
    prez[1] = 1;

    while(!q.empty())
    {
        int nod = q.front(); q.pop();
        last = nod;
        for(auto it : v[nod])
            if(!prez[it])
            {
                q.push(it);
                prez[it] = 1;
            }
    }

    for(int i=1; i<=n; i++) prez[i] = 0;

    q.push(last);
    prez[last] = 1;

    while(!q.empty())
    {
        int nod = q.front(); q.pop();
        for(auto it : v[nod])
            if(!prez[it])
            {
                q.push(it);
                prez[it] = prez[nod] + 1;
            }
    }

    for(int i=1; i<=n; i++)
        ans = max(ans, prez[i]);

    cout << (ans-1);
    return 0;
}