Cod sursa(job #3291019)

Utilizator mihai_bosIancu Mihai mihai_bos Data 2 aprilie 2025 23:57:22
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

const int NMAX = 1e5 + 5;
vector < int > v[NMAX];
int n, i, last, diametru, dist[NMAX];
queue < int > q;

void bfs(int nod){
    q.push(nod);
    dist[nod] = 1;
    last = nod;
    while(!q.empty()) {
        int cur = q.front();
        q.pop();
        for(auto x : v[cur])
        if(dist[cur] + 1 < dist[x] || !dist[x]) {
            dist[x] = dist[cur] + 1;
            last = x;
            q.push(x);
        }
    }
}

int main()
{
    cin >> n;
    for(i = 1; i < n; ++i) {
        int x, y;
        cin >> x >> y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    bfs(1);
    for(i = 1; i <= n; ++i)
        dist[i] = 0;
    bfs(last);
    cout << dist[last];
    return 0;
}