Это можно решить за O(E)
.
Почему ваше решение неверно? Рассмотрим треугольник, где два ребра равны 1, а последний равен 2, наименьший необходимый зазор равен 1, ваше решение говорит 2.
Решение, которое я могу придумать, состоит в создании связующего дерева с минимальным узким местом (MBST), затем возьмите его максимальное преимущество, и это будет вашим уровнем допуска.
Почему это будет работать? Ну, наибольший край этого дерева - наименьшее, которое вы можете получить (минимальное узкое место), и по-прежнему охватывать всюду на графике (охват).
MBST
может быть , созданным в O(E)
с использованием деленияи победить методы, чем пройти через все ребра в этом дереве, чтобы найти максимум равен O(E)
. В общей сложности O(E)
.
Вы можете решить эту проблему с помощью простого MST
, поскольку любое MST
равно MBST
( доказательство в q3 ),но это займет O(E log V)
или O(E + V log V)
, в зависимости от алгоритма ( Kruskal или Prim ).