Cod sursa(job #2795399)

Utilizator schizofrenieShallan Davar schizofrenie Data 6 noiembrie 2021 12:14:41
Problema Diametrul unui arbore Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cassert>
#include <stdio.h>
#include <vector>
#include <queue>

#define MAXN 100000

int n;

std::vector<int> muchii[MAXN];
int v = 0;
bool viz[2][MAXN];
int depth[MAXN];

int
bfs (int x) {
	std::queue<int> q;

	depth[x] = 1;
	viz[v][x] = 1;
	q.emplace(x);

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

		for (int i = 0; i != muchii[x].size(); ++ i) {
			int now = muchii[x][i];

			if (!viz[v][now]) {
				viz[v][now] = true;
				depth[now] = depth[x] + 1;
				q.emplace(now);
			}
		}
	}

	++ v;
	return x;
}



int main () {
	int i;

	assert(freopen("darb.in", "r", stdin));
	assert(freopen("darb.out", "w", stdout));

	assert(scanf("%d", &n) == 1);

	for (i = 0; i != n - 1; ++ i) {
		int de, la;
		assert(scanf("%d%d", &de, &la) == 2);
		-- de, -- la;

		muchii[de].emplace_back(la);
		muchii[la].emplace_back(de);
	}

	printf("%d", depth[bfs(bfs(0))]);

}