Ctrl K

Самый ценный маршрут через четыре города

Сложная
Есть n городов с номерами от 0 до n − 1. Город i приносит values[i] очков. Двусторонние дороги заданы списком roads: пара [a, b] означает дорогу между городами a и b. Маршрут — это последовательность из **четырёх разных** городов, в которой каждые два соседних города соединены дорогой. Его ценность — сумма очков этих четырёх городов. Верните наибольшую ценность маршрута или -1, если ни одного маршрута нет.
Пример 1
values=[3, 10, 1, 7, 6], roads=[[0, 1], [1, 2], [2, 3], [1, 3], [3, 4]] → 26

Маршрут 0 → 1 → 3 → 4 проходит по дорогам 0–1, 1–3, 3–4 и набирает 3 + 10 + 7 + 6 = 26. Город 2 (1 очко) брать невыгодно.

Пример 2
values=[5, 5, 5, 5, 5], roads=[[0, 1], [0, 2], [0, 3], [0, 4]] → -1

Все дороги идут из города 0. Из любого другого города можно уехать только в 0, а туда возвращаться нельзя, поэтому маршрута из четырёх городов нет: -1.

Пример 3
values=[2, 4, 6, 8], roads=[[0, 1], [1, 2], [2, 3]] → 20

Единственный путь — по цепочке 0 → 1 → 2 → 3 (или обратно): 2 + 4 + 6 + 8 = 20.

Ограничения
  • 4 ≤ n = values.length ≤ 5 · 10⁴
  • 1 ≤ values[i] ≤ 10⁸
  • 0 ≤ roads.length ≤ 5 · 10⁴
  • roads[i] = [a, b], 0 ≤ a, b ≤ n − 1, a ≠ b
  • Между двумя городами не больше одной дороги
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиУровни клеток по строкам и столбцам СложнаяПоездки на самокате с лимитом дороги СложнаяЗагруженные пары серверов СложнаяИсходный массив по двум сдвигам СложнаяКрасота клумб на бюджете Сложная
загружаем Python…
Вход
values=[3, 10, 1, 7, 6], roads=[[0, 1], [1, 2], [2, 3], [1, 3], [3, 4]]
Ожидается
26

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