python3超时用Pypy3运行
from collections import deque
n,m,p = map(int,input().split())
A = [list(map(int,input().split())) for _ in range(n)]
B = [list(map(int,input().split())) for _ in range(n)]
C = [[0]*m for _ in range(n)]
# 预处理数组C
MOD = p-1
for i in range(n):
for j in range(m):
exp = pow(2, B[i][j], MOD)
C[i][j] = A[i][j] * pow(p, exp, MOD) % MOD
# 三维,否已经到达过位置 x,y, 且此时计数器模值为 mod_val
visited = [[[False] * MOD for _ in range(m)] for _ in range(n)]
q = deque()
start_val = C[0][0] % MOD
visited[0][0][start_val] = True
q.append((0, 0, start_val, 0)) # (x, y, mod_val, steps)
dirs = [(-1,0),(1,0),(0,-1),(0,1)]
res = -1
while q:
x, y, mod_val, steps = q.popleft()
# 到达终点且满足条件
if x == n - 1 and y == m - 1 and mod_val % MOD == 0:
res = steps
break
for dx, dy in dirs:
nx, ny = x + dx, y + dy
if 0 <= nx < n and 0 <= ny < m:
new_val = (mod_val + C[nx][ny]) % MOD
if not visited[nx][ny][new_val]:
visited[nx][ny][new_val] = True
q.append((nx, ny, new_val, steps + 1))
print(res)

京公网安备 11010502036488号