from Strategies.strat import PathFindingStrategy from path import restore from collections import deque class BFS(PathFindingStrategy): def findPath(self, maze, start, exit): queue = deque([start]) visited = {start} parent = {} while queue: current = queue.popleft() if current == exit: break for n in maze.get_neigbors(current): if n not in visited: visited.add(n) parent[n] = current queue.append(n) return self.restore(parent, start, exit), len(visited)