```python from collections import deque def bfs(n, m, grid): directions = [(0, 1), (0, -1), (1, 0), (-1, 0)] visited = [[False] * m for _ in range(n)] q = deque() for i in range(n): for j in range(m): if grid[i][j] == 'b': q.append((i, j, 0, 3)) visited[i][j] = True break else: continue break while q: x, y, steps, bombs = q.popleft() if grid[x][y] == '*': return steps for dx, dy in directions: new_x, new_y = x + dx, y + dy if 0 <= new_x < n and 0 <= new_y < m and not visited[new_x][new_y]: if grid[new_x][new_y] == '.': visited[new_x][new_y] = True q.append((new_x, new_y, steps + 1, bombs)) elif grid[new_x][new_y] == 'w' and bombs > 0: visited[new_x][new_y] = True q.append((new_x, new_y, steps + 1, bombs - 1)) return -1 n, m = map(int, input().split()) grid = [list(input()) for _ in range(n)] print(bfs(n, m, grid)) ``` [2024-09-03 20:22:47 | AI写代码神器 | 360点数解答]