Ctrl K

Кабели и порты

Сложная
Офисы компании пронумерованы от 0 до n - 1 и соединены кабелями так, что получилось дерево: между любыми двумя офисами есть ровно один путь. Кабель cables[i] = [u, v, w] соединяет офисы u и v и имеет пропускную способность w. Оборудование обновили, и теперь в каждом офисе всего ports портов: к офису может быть подключено не больше ports кабелей. Часть кабелей (возможно, ни одного) придётся отключить. Верните наибольшую суммарную пропускную способность кабелей, которые можно оставить.
Пример 1
cables=[[0, 1, 7], [0, 2, 3], [0, 3, 5], [3, 4, 9]], ports=2 → 21

У офиса 0 три кабеля, а портов два — самый слабый кабель 0–2 (3) приходится снять. Остаётся 7 + 5 + 9 = 21.

Пример 2
cables=[[0, 1, 4], [1, 2, 10], [2, 3, 4]], ports=1 → 10

При одном порте у каждого офиса кабели не могут сходиться. Выгоднее оставить один кабель 1–2 (10), чем пару 0–1 и 2–3 (8).

Пример 3
cables=[[0, 1, 2], [1, 2, 6]], ports=2 → 8
Ограничения
  • 2 ≤ n ≤ 10⁵, len(cables) = n - 1
  • 1 ≤ ports ≤ n - 1
  • 0 ≤ u, v ≤ n - 1
  • 1 ≤ w ≤ 10⁶
  • Кабели образуют дерево
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый тяжёлый путь в дереве СложнаяСуммарные расстояния в дереве дорог СложнаяМинимум охранников на дереве СложнаяСамое тяжёлое поддерево поиска СложнаяПервая пропущенная метка в каждом поддереве Сложная
загружаем Python…
Вход
cables=[[0, 1, 7], [0, 2, 3], [0, 3, 5], [3, 4, 9]], ports=2
Ожидается
21

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 68 тестов на сервере, включая скрытые.