Grafta döngü olabildiği için, gezerken nerelere gittiğini hatırlamazsan aynı iki düğüm arasında sonsuza kadar gidip gelirsin. Çözüm bir görülenler kümesidir: bir düğümü yalnızca daha önce görmediysen sıraya alırsın.
def reachable(grid, r, c, seen):if not (0 <= r < len(grid) and 0 <= c < len(grid[0])):returnif grid[r][c] == "#" or (r, c) in seen:returnseen.add((r, c))for dr, dc in ((1, 0), (-1, 0), (0, 1), (0, -1)):reachable(grid, r + dr, c + dc, seen)
"A'dan B'ye yol var mı?" sorusu bu gezintinin kendisidir: A'dan başla, gezinti bittiğinde B görülenlerin içindeyse yol vardır. Işınlanma pedi gibi fazladan bağlantılar yalnızca komşu listesine bir kenar daha ekler; gezinti aynı kalır.