蟻本 2-1 迷路の最短路
code: python
from collections import deque
inf = 100000000
n = int(input())
m = int(input())
maze = input() for i in range(n)
for i in range(n):
mazei = list(mazei)
for i in range(n):
for j in range(m):
if (mazeij == 'S'):
sx, sy = i, j
if (mazeij == 'G'):
gx, gy = i, j
d = [0 * n for i in 0 * m]
dx = 1, 0, -1, 0
dy = 0, 1, 0, -1
# (sx, sy)から(gx, gy)への最短距離を求める
# 辿り着けないとinf
def dfs():
que = deque()
# 全ての点をinfで初期化
for i in range(n):
for j in range(m):
dij = inf
# スタート地点をキューに入れ、その点の距離を0にする
que.append((sx, sy))
dsxsy = 0
while (que):
# キューの先頭を取り出す
p = que.popleft()
# 取り出してきた状態がゴールなら探索をやめる
if (p0 == gx and p1 == gy):
break
# 移動4方向をループ
for i in range(4):
# 移動した後の点を(nx, ny)とする
nx, ny = p0 + dxi, p1 + dyi
# 移動が可能かの判定と訪れたことがあるかの判定
if (0 <= nx and nx < n and 0 <= ny and ny < m and mazenxny != '#' and dnxny == inf):
# 移動できるならキューに入れ、その点の距離をpからの距離+1で確定する
que.append((nx, ny))
dnxny = d[p0][p1] + 1
return dgxgy
res = dfs()
print(res)
# #S######.#
# ......#..#
# .#.##.##.#
# .#........
# ##.##.####
# ....#....#
# .#######.#
# ....#.....
# .####.###.
# ....#...G#
テーマ
#dfs