Cod sursa(job #3327987)

Utilizator eugenioMarinescu Eugenio eugenio Data 5 decembrie 2025 19:37:09
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>
#define nmax 200000
using namespace std;
#define cin fin
#define cout fout
ifstream cin("darb.in");
ofstream cout("darb.out");

vector<int> gf[nmax];
int n, x, y, imax, l[nmax], viz[nmax];

void dfs(int nod, int len)
{
    viz[nod]=1;
    l[nod]=len;
    for(auto nnod : gf[nod])
        if(!viz[nnod])
            dfs(nnod,len+1);
}

int main()
{
    cin>>n;
    for(int i=1; i<n; i++)
    {
        cin>>x>>y;
        gf[x].push_back(y);
        gf[y].push_back(x);
    }
    dfs(1,0); // plec din radacina
    int lmax=-1;
    for(int i=1; i<=n; i++)
        if(l[i]>lmax)
        {
            imax=i;
            lmax=l[i];
        }
    for(int i=1; i<=n; i++)
        l[i]=viz[i]=0;
    dfs(imax,1);
    int newmax=-1;
    for(int i=1; i<=n; i++)
        if(l[i]>newmax)
            newmax=l[i];
    cout<<newmax;

}