Cod sursa(job #3308404)

Utilizator Tudor_CCTudor Cocu Tudor_CC Data 24 august 2025 15:03:59
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.27 kb
#include <bits/stdc++.h>

using namespace std;

int l[100555];

deque <int> q;

vector <int> v[100555];

int main()
{
    ifstream cin("darb.in");
    ofstream cout("darb.out");
    int n;
    cin>>n;
    int x,y;
    for(int i=1;i<n;++i)
    {
        cin>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    q.push_back(1);
    int mx=0,mi;
    l[1]=1;
    q.push_back(1);
    while(q.size())
    {
        if(l[q.front()]>mx)
        {
            mx=l[q.front()];
            mi=q.front();
        }
        for(auto a:v[q.front()])
        {
            if(l[a]==0)
            {
                q.push_back(a);
                l[a]=l[q.front()]+1;
            }
        }
        q.pop_front();
    }
    for(int i=1;i<=n;++i)
    {
        if(i!=mi)
        {
            l[i]=0;
        }
    }
    l[mi]=1;
    q.push_back(mi);
    mx=0;
    while(q.size())
    {
        if(l[q.front()]>mx)
        {
            mx=l[q.front()];
            mi=q.front();
        }
        for(auto a:v[q.front()])
        {
            if(l[a]==0)
            {
                q.push_back(a);
                l[a]=l[q.front()]+1;
            }
        }
        q.pop_front();
    }
    cout<<mx;
    return 0;
}