Cod sursa(job #2911728)

Utilizator andrei_C1Andrei Chertes andrei_C1 Data 1 iulie 2022 17:05:21
Problema Diametrul unui arbore Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

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

#define int long long

const int NMAX = 1e5;
int n, root, ans, max_dist, best_node;
bool visited[NMAX + 1];
vector<int> adj[NMAX + 1];

void dfs(int node, int dist = 0) {
	visited[node] = 1;

	if(dist > max_dist) {
		max_dist = dist;
		best_node = node;
	}

	for(auto it: adj[node]) {
		if(!visited[it]) {
			dfs(it, dist + 1);
		}
	}
}

signed main() {
	fin >> n;

	for(int i = 1; i < n; i++) {
		int a, b;
		fin >> a >> b;

		adj[a].push_back(b);
		adj[b].push_back(a);
	}

	max_dist = 0;
	root = 1;
	 for(int i = 1; i <= n; i++) {
		visited[i] = 0;
	}


	dfs(root);

	max_dist = 0;
	root = best_node;
	for(int i = 1; i <= n; i++) {
		visited[i] = 0;
	}

	dfs(root);

	fout << max_dist << '\n';
	return 0;
}