Cod sursa(job #3349999)

Utilizator mirunaciobanuCiobanu Ioana Miruna mirunaciobanu Data 4 aprilie 2026 14:58:53
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <vector>
#include <fstream>
#include<queue>
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
int N;
const int nmax=100001;
vector<int>g[nmax];
int dist[nmax];
int bfs(int node){
  for(int i = 1; i <= N; i++)
    dist[i] = -1;
  dist[node] = 0;
  int furthest = node;
  queue<int>q;
  q.push(node);
  while(!q.empty()){
    int node=q.front();
    for(int i=0; i<g[node].size(); i++){
      int vecin=g[node][i];
      if(dist[vecin]==-1){
        dist[vecin]=dist[node]+1;
        if(dist[vecin] > dist[furthest])
          furthest = vecin;
        q.push(vecin);
      }
    }
    q.pop();
  }
  return furthest;
}
int main(){
  fin>>N;
  for(int i=0; i<N - 1; i++){
    int x,y;
    fin>>x>>y;
    g[x].push_back(y);
    g[y].push_back(x);
  }
  int A = bfs(1);
  int B=bfs(A);
  fout<<dist[B] + 1;

  return 0;
}