Изменения
Нет описания правки
Возьмём любую вершину V и найдём расстояния до всех других вершин.
d [v] = \max_max{u, v \in V, u \ne v} dist(u, v)
Возьмём вершину U такую,что d[u] >= d[t] для любого t.Снова найдём расстояние до всех остальных вершин.Самое большое расстояние-диаметр дерева.
Расстояние до остальных вершин удобно искать алгоритмом BFS.
bfs(int v) - заполняет массив d[n] расстояниями до всех вершин.
v = u = w = 0;
bfs(v);