Вы говорите, N узлов и N-1 вершин, поэтому ваш граф является деревом.Вы на самом деле ищете подключенное K-подмножество узлов, минимизирующее самый длинный край.
Алгоритм полинома может быть таким: Сортировать все ваши ребра по возрастающему расстоянию.Затем выполните цикл по краям:
- , если ни один из двух узлов не входит в группу, создайте новую группу.
- В противном случае, если один узел находится в 1 существующей группе, добавьте другой кгруппа
- , в противном случае оба узла находятся в 2 разных группах, затем объедините группы
Когда группа достигнет K, разорвите цикл, и у вас будет подключенное K-подмножество.
Тем не менее, вы должны заметить, что ваша группа может содержать более K узлов.Вы можете представить себе проблему наличия 4 узлов, закрытых два на два.Не было бы точного решения вашей задачи с тремя подмножествами.