Маршрут с одним сносом

тема: BFS/DFS · уровень: продвинутый

Условие

В городе кварталы образуют прямоугольную сетку. По некоторым кварталам можно пройти, а некоторые перекрыты стеной.

Ты идёшь из северо‑западного угла (верхняя левая клетка) в юго‑восточный (нижняя правая клетка). За весь путь ты можешь снести стену ровно в одном квартале (или не сносить вообще), и после этого этот квартал становится проходимым.

Переходить можно только между клетками с общей стороной.

Нужно узнать минимальное число шагов (переходов между соседними клетками), чтобы дойти до финиша. Если это невозможно даже с одним сносом, выведи -1.

Формат ввода

В первой строке два числа R и C — число строк и столбцов. Дальше идут R строк по C символов:

Гарантируется, что в первой и последней клетке стоит ..

Формат вывода

Одно целое число — минимальное число шагов, либо -1.

Ограничения

Пример

Ввод:

3 4
....
.##.
....

Вывод:

5

Решить задачу с автопроверкой на Python →

Куда дальше