Ctrl K

Прогулка от гостиницы

Сложная
В городе n интересных мест, пронумерованных от 0 до n − 1; в месте 0 стоит ваша гостиница. Красота места i — beauty[i]. Места соединены двусторонними дорогами: roads[j] = [u, v, t] означает, что путь между u и v в любую сторону занимает t минут. Прогулка начинается и заканчивается в гостинице и длится не больше time_limit минут. По дорогам и местам можно проходить сколько угодно раз, но красота каждого посещённого места засчитывается **один раз**. Гостиница тоже считается посещённой. Верните наибольшую суммарную красоту, которую может собрать такая прогулка.
Пример 1
beauty=[3, 20, 7, 12], roads=[[0, 1, 15], [1, 2, 10], [0, 2, 25], [0, 3, 30]], time_limit=50 → 30

Маршрут 0 → 1 → 2 → 0 занимает 15 + 10 + 25 = 50 минут и собирает 3 + 20 + 7 = 30. Место 3 даёт больше красоты, но туда и обратно — 60 минут.

Пример 2
beauty=[1, 50, 9], roads=[[0, 2, 10], [1, 2, 40]], time_limit=40 → 10

До места 1 не успеть вернуться, зато 0 → 2 → 0 за 20 минут даёт 1 + 9 = 10.

Пример 3
beauty=[4, 6], roads=[], time_limit=10 → 4

Дорог нет: можно лишь остаться у гостиницы, это красота 4.

Ограничения
  • 1 ≤ n ≤ 1000
  • 0 ≤ beauty[i] ≤ 10⁸
  • 0 ≤ len(roads) ≤ 2000
  • 0 ≤ u, v ≤ n − 1, u ≠ v; каждая пара мест соединена не больше чем одной дорогой
  • 10 ≤ t, time_limit ≤ 100
  • Из каждого места выходит не больше четырёх дорог
  • Город может быть несвязным
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДорешать судоку СложнаяМирные ферзи СложнаяВсе способы расставить пробелы СложнаяСлова в буквенной сетке СложнаяПорядок букв по словарю Сложная
загружаем Python…
Вход
beauty=[3, 20, 7, 12], roads=[[0, 1, 15], [1, 2, 10], [0, 2, 25], [0, 3, 30]], time_limit=50
Ожидается
30

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