Можно рассмотреть лабиринт как граф и запустить на нем "метод волны". Однако не рекомендуется создавать матрицу смежности в явном виде, а рекомендуется поступить следующим образом.
Пусть массив A - это данная нам таблица из 0 и 1. Пусть массив B - это массив такого же размера, где B[i,j] - это кратчайшее расстояние до клетки с координатами (i,j). Дальше мы поступаем аналогично методу волны, однако вместо того, чтобы искать соседей методом перебора всех вершин и проверки по матрице смежности, что вершины соединены, здесь мы всегда знаем соседей: если текущая клетка имеет координаты (i,j), то ее соседи - это клетки с координатами (i+1,j), (i-1,j), (i,j+1), (i,j-1).
Программистская "штучка". Чтобы не проверять, когда мы смотрим на соседей, что эта клетка принадлежит таблице (ведь может случиться так, что мы посмотрим на соседа граничной клетки, который уже не лежит в нашем лабиринте), поступим следующим образом. Создадим массивы A и B на один большего размера в каждую сторону, то есть:
var A,B:array[0..11,0..11] of integer;Заполним "дополнительные" элементы массива A единицами (то есть построим там "стены"), а элементы массива B - минус единицами (не знаем мы длину кратчайшего пути туда), и забудем про проблему выхода за границы лабиринта.