Cod sursa(job #3373715)

Utilizator BobitzaxdddCucos Bogdan Bobitzaxddd Data 7 noiembrie 2026 18:00:57
Problema Diametrul unui arbore Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <vector>
#include <iostream>
using namespace std;

vector<vector<int>> bla(100001);
vector<int> visited(100001), maxi1(100001), maxi2(100001);


int dfs(int inceput)
{

    visited[inceput] = 1;

    for(auto i : bla[inceput]) 
        if(!visited[i]) 
        {
            int lungime = dfs(i);
            
            if(lungime > maxi1[inceput]) maxi2[inceput] = maxi1[inceput], maxi1[inceput] = lungime;
            else if(lungime > maxi2[inceput]) maxi2[inceput] = lungime;
        }
    return maxi1[inceput]+1;
}

int main()
{
    int N, b, a;
    cin >> N;
    for(int i = 1; i < N; i++)
    {
        cin >> a >> b;
        bla[a].push_back(b);
        bla[b].push_back(a);
    }

    for(int i = 1; i < N; i++)
    {
        if(!bla[i].empty())
        {
            dfs(i);
        }
    }

    int rasp= 0;
    for(int i = 1; i <= N; i++)
    {
        rasp = max(rasp, maxi1[i] + maxi2[i]);
    }
    cout << maxi1[1] << ' ' << maxi2[1];
}