Cod sursa(job #3169348)

Utilizator AlexPlesescuAlexPlesescu AlexPlesescu Data 14 noiembrie 2023 20:48:15
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>
#define pb push_back
#define NMAX 100005
#define cin fin
#define cout fout

using namespace std;

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

vector<int> g[NMAX];
int n,ans,ult;

void bfs(int nod) {
    queue<int> Q;
    vector<int> viz(n+1,0);
    vector<int> dist(n+1,0);
    viz[nod] = 1;
    dist[nod] = 1;
    Q.push(nod);
    while (!Q.empty()) {
        int p = Q.front();
        Q.pop();
        for (auto vec : g[p]) {
            if (!viz[vec]) {
                viz[vec] = 1;
                dist[vec] = dist[p] + 1;
                ans = dist[vec];
                ult = vec;
                Q.push(vec);
            }
        }
    }
}

int main()
{
    cin >> n;
    for (int i=1; i <= n-1; i++) {
       int x,y;
       cin >> x >> y;
       g[x].pb(y);
       g[y].pb(x);
    }
    bfs(1);
    bfs(ult);
    cout << ans;
    return 0;
}