To jest klasyczny algorytm "shortest path". Łatwa sprawa: można rekurencyjnie (najlepiej) lub iteracyjnie (while True: z przerwą jak wszystko odwiedzisz). Chodzisz po całym labiryncie, znajdujesz wiele możliwych dróg i wybierasz tą najkrótszą. Trzeba mieć listę visited[] żeby nie chodzić po tych samych polach (w kółko). To jest łatwizna.
W P3 problem polega na tym, że odległości są liczone nawet w milionach pól i trudno jest narysować ten labirynt w pamięci. Teoretycznie się da, ale python się wykrzacza na tablicach liczonych w setkach MB, nie mówiąc o większych :) Trzeba użyć "kompresji odległości" - domyślam się co to jest, ale się nie znam na tym i P3 pozostawiłem na przyszłość :D .
Jednak został tylko tydzień, 5 dni - spróbuję zrobić, co się uda, zawsze zabawa jest! Lubię EC i AoC - najlepsza rzecz jaką można robić zimą przy komputerze.
Wracając do tych wielkich odległości, można zapisywać tylko współrzędne wierzchołków i wtedy długość boku ściany to pikuś, natomiast niewiadomo dokładnie jak ta najkrótsza trasa przebiega i jeśli "ludzik" idzie "schodkowo" to ciężko będzie policzyć dokładnie trasę z dokładnością do jednego pola.
No ale są mistrzowie kodu, którzy to w 3-4 godziny zrobili :)