classSolution: deffindSafeWalk(self, grid: List[List[int]], health: int) -> bool: m, n = len(grid), len(grid[0]) dis = [[inf] * n for _ inrange(m)] dis[0][0] = grid[0][0] q = deque([(0, 0)]) while q: i, j = q.popleft() for x, y in (i, j + 1), (i, j - 1), (i + 1, j), (i - 1, j): if0 <= x < m and0 <= y < n: g = grid[x][y] if dis[i][j] + g < dis[x][y]: dis[x][y] = dis[i][j] + g if g == 0: q.appendleft((x, y)) else: q.append((x, y)) return dis[-1][-1] < health