Ctrl K

Самая дорогая поездка по платным дорогам

Сложная
В стране cities городов с номерами от 0 до cities - 1. Тройка roads[i] = [a, b, toll] означает двустороннюю платную дорогу между городами a и b с платой toll. Между двумя городами не больше одной дороги. Вы хотите проехать ровно legs дорог подряд, начав в любом городе и ни в каком городе не побывав дважды. Верните наибольшую суммарную плату за такую поездку или -1, если её не существует.
Пример 1
cities=4, roads=[[0, 1, 5], [1, 2, 2], [2, 3, 7], [0, 2, 4]], legs=2 → 11

Маршрут 0 → 2 → 3 стоит 4 + 7 = 11, дороже маршрутов из двух дорог нет.

Пример 2
cities=3, roads=[[0, 1, 8]], legs=2 → -1

Есть всего одна дорога, а проехать 0 → 1 → 0 нельзя: город 0 повторится.

Пример 3
cities=3, roads=[[0, 1, 8], [1, 2, 0]], legs=2 → 8

Маршрут 0 → 1 → 2 стоит 8 + 0 = 8. Бесплатная дорога тоже считается.

Ограничения
  • 2 ≤ cities ≤ 15
  • 1 ≤ len(roads) ≤ 50
  • 0 ≤ a, b < cities, a ≠ b
  • 0 ≤ toll ≤ 100
  • 1 ≤ legs ≤ 50
  • Между любой парой городов не больше одной дороги
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКратчайший обход всех узлов СложнаяУчебный план с лимитом нагрузки СложнаяКак рассчитаться за меньше переводов СложнаяДве группы с одинаковым средним СложнаяСклейка фрагментов Сложная
загружаем Python…
Вход
cities=4, roads=[[0, 1, 5], [1, 2, 2], [2, 3, 7], [0, 2, 4]], legs=2
Ожидается
11

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