Реализация:
int diameter(graph g) {
bfs(int v) - заполняет массив d[n] расстояниями до всех вершин.
v = u = w = 0;
bfs(v);
for(i = 0; i < n; i++)
if (d[i] > d[u])
u = i;
bfs(u);
for(i = 0; i < n; i++)
if (d[i] > d[w])
w = i;
return d[w];
void diameter(graph g)
v = u = w = 0;
bfs(v);
dfs for(vi = 0; i < n; i++) if (d[i] > d[u]) u = i; bfs(u); for(i = 0; i < n; i++) if (d[i] > d[w]) w = i; return d[w];
}
int main()
{
... //задание графа G с количеством вершин n.
visited.assign(n, false); //в начале все вершины в графе ''не пройденные''
for (int i = 0; i < n; ++i) //проходим по всем вершинам графа...
if (!visited[i]) //...не забыв проверить, были мы уже в очередной вершине или нет
dfs(i);
return 0;
}