Cod sursa(job #3364492)

Utilizator JenJenCristache Ion JenJen Data 3 septembrie 2026 19:46:25
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>

using namespace std;

ifstream cin ("darb.in");
ofstream cout ("darb.out");

struct Nod
{
    int nod, nivel;
};
int n, a, b;
vector <int> adj[100005];

queue <Nod> q;
bitset<100005> viz;
int rez, fin;

void bfs(int root)
{
    q.push({root, 0});
    viz[root] = 1;

    while(!q.empty())
    {
        Nod curent = q.front();
        rez = curent.nod;
        fin = curent.nivel;

        q.pop();

        int niv = curent.nivel + 1;
        for (const auto& x : adj[curent.nod])
        {
            if (viz[x] == 0) q.push({x, niv});
            viz[x] = 1;
        }
    }
}
int main()
{
    cin >> n;

    for (int i = 1; i < n; i++)
    {
        cin >> a >> b;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }

    bfs(1);
    viz = 0;

    bfs(rez);
    cout << fin + 1;
    return 0;
}