这道题目可以使用广度优先搜索(BFS)来解决。
算法流程如下:
读入迷宫的大小n和m,读入迷宫的格子信息,建立一个n*n的矩阵来存储迷宫的格子信息。
对于每个询问(i, j),从第i行第j列的格子开始进行BFS搜索。
在BFS搜索过程中,使用一个队列来保存已经被访问过但是尚未处理的格子。每次从队列中取出一个格子(x, y),然后将与它相邻的4个格子(x+1,y), (x-1,y), (x,y+1), (x,y-1)加入队列中,同时将访问次数加1。
当队列为空时,BFS搜索结束。返回访问次数即为从(i, j)开始能移动到的格子数。
代码如下:
```python from collections import deque
def bfs(grid, start_x, start_y): n = len(grid) m = len(grid[0]) visited = [[False for _ in range(m)] for _ in range(n)]
queue = deque()
queue.append((start_x, start_y))
visited[start_x][start_y] = True
steps =0
while queue:
x, y = queue.popleft()
steps += 1
for dx, dy in [(0,1), (0,-1), (1,0), (-1,0)]:
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] and grid[new_x][new_y] == grid[start_x][start_y]:
queue.append((new_x, new_y))
visited[new_x][new_y] = True
return steps
n, m = map(int, input().split()) grid = [] for i in range(n