【AtCoder】第三回 アルゴリズム実技検定 G - グリッド金移動 【python】

アルゴリズム実技検定 公式テキスト (エントリー~中級編)の6.3.1幅優先探索
AtCoder Beginner Contest 007 C - 幅優先探索
の類題として挙げられている問題を解いてみました。
第三回 アルゴリズム実技検定 G - グリッド金移動
submission

障害物の範囲の外側を通るケースがあることに気づかず誤答してしまいました。

from collections import deque
#座標を0以上に調整する
#障害物のマスの制約から1マス広げる
offset = 201
N, X, Y = map(int, input().split())
X += offset
Y += offset

sx, sy = 0 + offset, 0 + offset

dist = []
#考えられるマスの範囲は0~402のためすべてのマスの個数は403
all_grid = offset * 2 + 1
#距離の初期値を-1
for i in range(all_grid):
    dist.append([-1] * all_grid)


#障害物のあるマスは距離を-10とする
for i in range(N):
    ox, oy = map(int, input().split())
    dist[ox + offset][oy + offset] = -10
dist[sx][sy] = 0

Q = deque()
Q.append([sx, sy])

while len(Q) > 0:
    x, y = Q.popleft()
    for x2, y2 in [[x + 1, y + 1], [x, y + 1], [x - 1, y + 1], [x + 1, y], [x - 1, y], [x, y - 1]]:
        if not (0 <= x2 <= 402 and 0 <= y2 <= 402):
            continue

        if dist[x2][y2] == -10:
            continue

        if dist[x2][y2] == -1:
            dist[x2][y2] = dist[x][y] + 1
            Q.append([x2, y2])

print(dist[X][Y])

こちらのユーザ解説より、正確な範囲を考える必要はなく[-250,250]くらいで良いとのことで、勉強になりました。