Модуль: Графы. BFS - обход в ширину


9. Игрушечный лабиринт

Игрушечный лабиринт представляет собой прозрачную плоскую прямоугольную коробку, внутри которой есть препятствия и перемещается шарик.
Лабиринт можно наклонять влево, вправо, к себе или от себя, после каждого наклона шарик перемещается в заданном направлении до ближайшего препятствия или до стенки лабиринта, после чего останавливается.
Целью игры является загнать шарик в одно из специальных отверстий – выходов. Шарик проваливается в отверстие, если оно встречается на его пути (шарик не обязан останавливаться в отверстии).
Первоначально шарик находится в левом верхнем углу лабиринта. Гарантируется, что решение существует и левый верхний угол не занят препятствием или отверстием.
Входные данные
В первой строке входного файла записаны числа N и M – размеры лабиринта (целые положительные числа, не превышающие 100).
Затем идет N строк по M чисел в каждой – описание лабиринта.
Число 0 в описании означает свободное место, число 1 – препятствие, число 2 – отверстие.
Выходные данные
Выведите единственное число – минимальное количество наклонов, которые необходимо сделать, чтобы шарик покинул лабиринт через одно из отверстий.

Примеры

входные данные выходные данные
4 5
0 0 0 0 1
0 1 1 0 2
0 2 1 0 0
0 0 1 0 0
3

Напишите программу
Auto
       

time 500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w646
Python10
Комментарий учителя