Untitled
unknown
plain_text
a year ago
1.2 kB
15
Indexable
import queue dr = [0, 0, 1, -1] dc = [1, -1, 0, 0] MAX = 21 visited = [[False] * MAX for _ in range(MAX)] maze = [None] * MAX class Cell: def __init__(self, _r, _c): self.r = _r self.c = _c def isValid(r, c): return r in range(n) and c in range(m) def BFS(s, f): q = queue.Queue() visited[s.r][s.c] = True q.put(s) while not q.empty(): u = q.get() if u.r == f.r and u.c == f.c: return True for i in range(4): r = u.r + dr[i] c = u.c + dc[i] if isValid(r, c) and maze[r][c] == '.' and not visited[r][c]: visited[r][c] = True q.put(Cell(r, c)) return False Q = int(input()) for _ in range(Q): n, m = map(int, input().split()) for i in range(n): maze[i] = input() entrance = [] for i in range(n): for j in range(m): visited[i][j] = False if maze[i][j] == '.' and (i == 0 or j == 0 or i == n - 1 or j == m - 1): entrance.append(Cell(i, j)) if (len(entrance)) != 2: print("invalid") else: s = entrance[0] f = entrance[1] print("valid" if BFS(s, f) else "invalid")
Editor is loading...
Leave a Comment