Вот такая забавная визуализация построения лабиринта получилась с помощью библиотеки pygame

Первым делом генерируется сетка, каждое ребро которой имеет рандомный вес. Хранится все это дело как список ребер, каждое имеет начальные и конечные координаты. Возможно не самый крутой способ, но в дальнейшем он сыграет на руку при реализации алгоритма Крускала. Так это выглядит после построения сетки (цвет характеризует вес ребра)


Далее строится остовное дерево по алгоритму Крускала. Ребра сортируются в порядке убывания (можно и возрастания) весов. Далее по порядку каждое ребро добавляем в конечный граф, при этом исключая циклы. В общем, реализация точь-в-точь как здесь. Вот такой лабиринт имеем в итоге:

Решается все это дело следующим образом. Берем стартовый пиксель и закрашиваем соседние с ним пиксели (которые при этом не являются стенками) в цвет соответствующего направления, затем добавляем их в список крайних точек. Далее проделываем такую оперцию для каждой точки из списка, после чего удаляем ее. Цвет пикселя в дальнейшем позволит восстановить обратный путь. Так решение выглядит в процессе:

А это построенный путь от левого верхнего до правого нижнего края:

Код совершенно не оптимизирован и не причесан, написан за вечер на коленке и находится здесь.