公式
F - EGFパス 解説
by
F - EGFパス 解説
by
sounansya
幅優先探索を行えば良いです。現在のマスと隣接するマスのうち書かれた文字が異なるマス同士に辺が張られているとみなし、マス \((1,1)\) からマス \((H,W)\) までの最短距離を求めれば良いです。
実装例(Python3)
from collections import deque
h, w = map(int, input().split())
s = [input() for _ in range(h)]
q = deque()
INF = 10**9
d = [[INF] * w for _ in range(h)]
q.append((0, 0))
dxy = [(1, 0), (-1, 0), (0, 1), (0, -1)]
d[0][0] = 0
while q:
x, y = q.popleft()
for k in range(4):
xx, yy = x + dxy[k][0], y + dxy[k][1]
if (
not (0 <= xx < h)
or not (0 <= yy < w)
or s[x][y] == s[xx][yy]
or d[xx][yy] != INF
):
continue
q.append((xx, yy))
d[xx][yy] = d[x][y] + 1
print(-1 if d[-1][-1] == INF else d[-1][-1])
投稿日時:
最終更新:
