Нашли ошибку?

Маршрут с минимумом перегонов

СредняяРеализацияГлава 6

#поиск в ширину#кратчайший путь#восстановление путиid: ga-metro-route

Схема метро задана графом: lines[s] — станции, до которых можно доехать от s за один перегон. Напишите route(lines, start, goal): функция возвращает список станций от start до goal с минимальным числом перегонов, включая обе конечные станции, или None, если пути нет. Если кратчайших маршрутов несколько, годится любой.

Пример

lines = {
    "Парк": ["Музей", "Вокзал"],
    "Музей": ["Театр"],
    "Вокзал": ["Рынок"],
    "Рынок": ["Театр", "Порт"],
}
route(lines, "Парк", "Театр")   # ["Парк", "Музей", "Театр"]
route(lines, "Парк", "Парк")    # ["Парк"]
route(lines, "Порт", "Парк")    # None

Решение

def route(lines: dict[str, list[str]], start: str, goal: str) -> list[str] | None:
    """Кратчайший по числу перегонов путь от start до goal или None."""
    # ваш код
    raise NotImplementedError

Можно решать и в своём редакторе: «Скопировать с тестами» и запустите python3 metro_route.py — тесты те же, результат покажет ✓ / ✗ и итог.