pythonでの幅優先探索(BFS) マップが入力で与えられているとき

・問題
atcoder.jp

・参考:
スタックとキューを極める! 〜 考え方と使い所を特集 〜 - Qiita

・注意点:参考文献を見れば基本大丈夫だが、スタートとゴールの座標をマイナス1する必要がある。(sx-=1,,,のように)

・実装:

from collections import deque
H,W=map(int,input().split())
sx,sy=map(int,input().split())
gx,gy=map(int,input().split())
#1つ下げる
sx-=1
sy-=1
gx-=1
gy-=1
field=[]
for _ in range(H):
  field.append(list(input()))

dx=[1,0,-1,0]
dy=[0,1,0,-1]

#スタートからの距離がdist
dist=[[-1 for _ in range(W)] for _ in range(H)]
#print(dist)
que=deque()

#スタートはdist=0、queにスタートを追加
dist[sx][sy]=0
que.append((sx,sy))
#print(que)

#queがからになるまでやる
while len(que)!=0:
  x,y=que.popleft()  #queの先頭のペアを取り出す
  
  #移動
  for i in range(4):
    next_x=x+dx[i]
    next_y=y+dy[i]
    
    #場外はスルー、#のときも
    if next_x<0 or next_x>=H or next_y<0 or next_y>=W:
      continue
    if field[next_x][next_y]=='#':
      continue
        
    #未探索ならqueにいれる
    if dist[next_x][next_y]==-1:
      que.append((next_x,next_y))
      #距離の更新
      dist[next_x][next_y]=dist[x][y]+1
      
print(dist[gx][gy])