Все три требуемые величины находятся с помощью модификации стандартного алгоритма поиска в ширину, который нужно выполнить, начиная с каждой вершины в графе. Модификация выглядит следующим образом.
Пусть v0 — начальная вершина. Положим её в очередь Q, и положим dist(v0) = 0, sum = 0. Теперь, пока Q не пуста:
- Извлечём из Q вершину v;
- Положим sum = sum + dist(v);
- Для всех вершин w, непосредственно достижимых их v, принадлежащих той же компоненте сильной связности, что и v0, для которых dist(w) ещё не определено:
- Положим w в Q;
- Положим dist(w) = dist(v) + 1;
После этого самая удалённая от v0 вершина x — это та, которая была удалена из очереди последней, эксцентриситет равен dist(x), а среднее расстояние до всех вершин — sum, делённый на общее число вершин, положенных в очередь.