Cod sursa(job #3003318)

Utilizator 100pCiornei Stefan 100p Data 15 martie 2023 17:39:45
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <bits/stdc++.h>

#define MAX 100000
#define FILES freopen("darb.in","r",stdin);\
              freopen("darb.out","w",stdout);
#define mod 666013

using namespace std;

vector<int> v[MAX + 5];

int best, f, dp[MAX + 5], n;

void bfs(int x)
{
    queue<int> q;
    q.push(x);
    while(!q.empty())
    {
        x = q.front();
        q.pop();
        for(auto i : v[x])
        {
            if(!dp[i])
            {
                dp[i] = dp[x] + 1;
                q.push(i);
            }
        }
    }
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    FILES
    std::cin >> n;
    for(int i = 1;i <= n; ++i)
    {
        int a, b;
        std::cin >> a >> b;
        v[a].push_back(b), v[b].push_back(a);
    }
    bfs(1);
    for(int i = 1;i <= n; ++i)
    {
        if(dp[i] > best)
            best = dp[i], f = i;
    }
    memset(dp, false, sizeof(dp));
    bfs(f);
    for(int i = 1;i <= n; ++i)
        best = max(best, dp[i]);
    std::cout << best + 1;
}