Cod sursa(job #2875919)

Utilizator NanuGrancea Alexandru Nanu Data 22 martie 2022 17:36:15
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream fin("darb.in");
ofstream fout("darb.out");

#define DIM 100000

int n, nvl[DIM + 1];
vector <int> G[DIM + 1];

static inline void dfs(int nod, int nr) {
  nvl[nod] = nr;
  for(auto e : G[nod])
    if(!nvl[e])
      dfs(e, nr + 1);
}

static inline void Find_node(int &nod, int &maxim) {
  nod = maxim = 0;
  for(int i = 1; i <= n; i++) 
    if(nvl[i] > maxim) {
      maxim = nvl[i];
      nod = i;
    }
}

int main() {
  fin >> n;
  for(int i = 1; i < n; i++) {
    int x, y;

    fin >> x >> y;
    G[x].push_back(y);
    G[y].push_back(x);
  }

  dfs(1, 1);
  int nod, maxim;
  Find_node(nod, maxim);

  for(int i = 1; i <= n; i++)
    nvl[i] = 0;

  dfs(nod, 1);
  Find_node(nod, maxim);
  fout << maxim;
  

  return 0;
}