Temat: Zadanie metro

Dzień dobry.
Mam problem z zadanie metro. Wiem, że trzeba z każdej stacji metra uruchomić BFS, ale mój algorytm źle wstawia niektóre wartości.
Kod do algorytmu: https://ideone.com/NRtB3H
Przykładowo dla pierwszego testu wstawia 1 zamiast 4 w niektórych miejscach
W Twoim numerowaniu, te dwa pola zaznaczone X-em sąsiadują ze sobą, mimo że są w różnych wierszach.

____
___X
X___
____
Sam BFS jest OK, błąd popełniasz przy tworzeniu sąsiadów.
Po pierwsze: dodawanie opcji 2 robisz dwa razy.
Po drugie: Warunki są złe. Dla pola (6,1), będącego u ciebie wierzchołkiem 26, dodasz jako sąsiada wierzchołek 25(i-1 >= 1), co jest błędem, bo jest on w poprzednim rzędzie. Zastanów się nad tym.

Mam również parę protipów:
- dla mnie łatwiej jest przedstawić grid jako tablicę dwuwymiarową(np.: tab[n][m]), a nie tab[n*m], myślę, że to mogło być dla ciebie źródłem kłopotów
- zamiast not możesz używać wykrzyknika
- zamiast false/true możesz pisać 0/1
Te dwie ostatnie porady są głównie wizualne, ale przyspieszają pisanie kodu, co czasami okazuje się przydatne.
Dzięki za pomoc