Cod sursa(job #2422365)

Utilizator lucametehauDart Monkey lucametehau Data 18 mai 2019 15:34:42
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

int n, x, y, lst, d;

int dp[100005];
bool viz[100005];
vector <int> g[100005];

void bfs(int nod) {
  queue <int> q;
  for(int i = 1; i <= n; i++)
    dp[i] = viz[i] = 0;
  q.push(nod);
  viz[nod] = 1; dp[nod] = 1;
  while(!q.empty()) {
    int nod = q.front();
    q.pop();
    for(auto i : g[nod]) {
      if(!viz[i]) {
        viz[i] = 1;
        dp[i] = dp[nod] + 1;
        lst = i;
        q.push(i);
      }
    }
  }
}

int main() {
  cin >> n;
  for(int i = 1; i < n; i++) {
    cin >> x >> y;
    g[x].push_back(y);
    g[y].push_back(x);
  }
  bfs(1);
  // cout << lst << "\n";
  bfs(lst);
  cout << dp[lst];
  return 0;
}