Ctrl K

Маршрут ближе всего к плану

Сложная
В стране city_count городов с номерами от 0 до city_count - 1. Двусторонние дороги roads[i] = [a, b] соединяют города a и b; из любого города можно добраться до любого другого, и между двумя городами не больше одной дороги. У каждого города есть код codes[i] из трёх заглавных латинских букв; у разных городов коды могут совпадать. Турист составил план поездки plan — список кодов городов, но дороги между соседними пунктами плана могут и не существовать. Найдите маршрут той же длины, что и план: последовательность номеров городов, в которой каждые два соседних города соединены дорогой (города могут повторяться). Среди всех маршрутов выберите тот, у которого меньше всего позиций i, где код i-го города маршрута отличается от plan[i]. Верните этот маршрут как список номеров городов. Гарантируется, что такой маршрут единственный.
Пример 1
city_count=4, roads=[[0, 1], [1, 2], [2, 3]], codes=['OSL', 'RIX', 'VNO', 'WAW'], plan=['RIX', 'VNO', 'WAW'] → [1, 2, 3]

Дороги образуют цепочку 0–1–2–3, и маршрут 1 → 2 → 3 совпадает с планом полностью.

Пример 2
city_count=4, roads=[[0, 1], [0, 2], [0, 3]], codes=['KZN', 'UFA', 'SAM', 'PEE'], plan=['UFA', 'SAM', 'KZN', 'PEE'] → [0, 2, 0, 3]

Все дороги идут через город 0 (KZN), поэтому из UFA в SAM напрямую не попасть. Маршрут 0 → 2 → 0 → 3 расходится с планом только в первой позиции, а любой маршрут, начатый в UFA, расходится минимум в двух.

Ограничения
  • 2 ≤ city_count ≤ 100
  • city_count − 1 ≤ len(roads) ≤ city_count · (city_count − 1) / 2
  • 0 ≤ a, b < city_count, a ≠ b
  • Граф дорог связный, между двумя городами не больше одной дороги
  • len(codes) = city_count
  • 1 ≤ len(plan) ≤ 100
  • Каждый код в codes и plan — ровно три заглавные латинские буквы
  • Маршрут с наименьшим числом расхождений единственный
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный подъём по карте СложнаяСуммарные расстояния в дереве дорог СложнаяКратчайший обход всех узлов СложнаяВор и охранник СложнаяУчебный план с лимитом нагрузки Сложная
загружаем Python…
Вход
city_count=4, roads=[[0, 1], [1, 2], [2, 3]], codes=['OSL', 'RIX', 'VNO', 'WAW'], plan=['RIX', 'VNO', 'WAW']
Ожидается
[1, 2, 3]

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