self.dungeon[i][j][k] ='#'; bfs_q.append(((i-1, j, k), t+1)) if (i-1>=0andself.dungeon[i-1][j][k] !='#') elseNone
self.dungeon[i][j][k] ='#'; bfs_q.append(((i+1, j, k), t+1)) if (i+1<self.landself.dungeon[i+1][j][k] !='#') elseNone
# Enqueue left, right, top, below grids in the same level
self.dungeon[i][j][k] ='#'; bfs_q.append(((i, j-1, k), t+1)) if (j-1>=0andself.dungeon[i][j-1][k] !='#') elseNone
self.dungeon[i][j][k] ='#'; bfs_q.append(((i, j+1, k), t+1)) if (j+1<self.randself.dungeon[i][j+1][k] !='#') elseNone
self.dungeon[i][j][k] ='#'; bfs_q.append(((i, j, k-1), t+1)) if (k-1>=1andself.dungeon[i][j][k-1] !='#') elseNone
self.dungeon[i][j][k] ='#'; bfs_q.append(((i, j, k+1), t+1)) if (k+1<self.candself.dungeon[i][j][k+1] !='#') elseNone
Incorrect handling of visited[] grids.
Copy-paste error: BFS sets the parent vertex/grid as visited repeatedly instead of the child vertices/grids while enqueueing.