Ctrl K

Самые дешёвые каналы до центра

Средняя
В сети servers серверов с номерами от 0 до servers - 1. Сервер 0 — центральный. Каналы связи односторонние: запись links[i] = [a, b, c] означает канал от сервера a к серверу b стоимостью c. Некоторые каналы можно отключить (или не отключать ни одного). После этого должны выполняться условия: - с любого сервера можно передать данные на сервер 0, возможно через другие серверы; - у каждого сервера осталось не больше limit исходящих каналов; - стоимость самого дорогого из оставшихся каналов как можно меньше. Верните эту наименьшую возможную стоимость самого дорогого канала. Если выполнить условия нельзя, верните -1.
Пример 1
servers=4, links=[[1, 0, 3], [2, 1, 2], [3, 2, 5], [3, 0, 4]], limit=1 → 4

Оставляем 1 → 0, 2 → 1 и 3 → 0: все серверы дотягиваются до нулевого, самый дорогой канал стоит 4. Без канала стоимостью 4 или 5 сервер 3 оказывается отрезан.

Пример 2
servers=3, links=[[0, 1, 1], [1, 2, 1]], limit=1 → -1

Каналы ведут только от сервера 0, поэтому серверы 1 и 2 не могут ничего ему отправить — ответ -1.

Пример 3
servers=3, links=[[1, 0, 7], [2, 0, 9], [2, 1, 1]], limit=2 → 7

Сервер 2 может идти через сервер 1 (2 → 1 → 0), тогда канал стоимостью 9 не нужен, и максимум равен 7.

Ограничения
  • 2 ≤ servers ≤ 10⁵
  • 1 ≤ limit ≤ servers - 1
  • 1 ≤ len(links) ≤ min(10⁵, servers · (servers - 1) / 2)
  • links[i] = [a, b, c], 0 ≤ a, b < servers, a ≠ b
  • 1 ≤ c ≤ 10⁶
  • Между двумя серверами может быть несколько каналов, но их стоимости различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЦепочки отношений СредняяКратчайший путь катящегося шарика СредняяВремя оповещения сети СредняяДешёвый перелёт с малым числом пересадок СредняяШарик и лунка Сложная
загружаем Python…
Вход
servers=4, links=[[1, 0, 3], [2, 1, 2], [3, 2, 5], [3, 0, 4]], limit=1
Ожидается
4

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