Cod sursa(job #3351937)

Utilizator sefulafemeiemanuel sefulafemei Data 22 aprilie 2026 16:14:04
Problema Diametrul unui arbore Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");

int n;
const int MAX = 100005;
vector<int> c[MAX];
int dist[MAX];
bool vis[MAX];
int maxglobal, nodcelmaideparte;

void bfs(int nodstart){
    queue<int> q;
    q.push(nodstart);
    vis[nodstart] = true;
    dist[nodstart] = 0;

    while(!q.empty()){
        int cur = q.front(); q.pop();

        for(int visit : c[cur])
            if(!vis[visit]){
                dist[visit] = dist[cur] + 1;
                if(dist[visit] > maxglobal){
                    maxglobal = dist[visit];
                    nodcelmaideparte = visit;
                }
                vis[visit] = true;
                q.push(visit);
            }        
    }
}



int main(){
    f >> n;
    for(int i = 0; i < n - 1; i++){
        int u ,v;
        f >> u >> v;
        c[u].push_back(v);
        c[v].push_back(u);
    }

    if(n == 1){
        g << 0;
        return 0;
    }
        



    bfs(1);
    memset(vis,false,sizeof(vis));
    memset(dist, 0, sizeof(dist));
    maxglobal = 0;
    bfs(nodcelmaideparte);


    g << maxglobal; 
}