結果

問題 No.2928 Gridpath
ユーザー noriaoki
提出日時 2024-10-12 16:31:00
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 133 ms / 2,000 ms
コード長 986 bytes
コンパイル時間 319 ms
コンパイル使用メモリ 82,048 KB
実行使用メモリ 77,036 KB
最終ジャッジ日時 2024-10-12 16:31:03
合計ジャッジ時間 2,773 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 20
権限があれば一括ダウンロードができます

ソースコード

diff #

h, w = map(int, input().split())
si, sj = map(lambda x: int(x)-1, input().split())
gi, gj = map(lambda x: int(x)-1, input().split())
ans = 0
grid = [[False]*w for _ in range(h)]
grid[si][sj] = True
stack = [[0, si, sj]]
d = [(-1, 0), (0, -1), (1, 0), (0, 1)]

while stack:
    _, i, j = stack[-1]
    if i==gi and j==gj:
        ans += 1
        stack[-1][0] = 4
    if stack[-1][0]==4:
        stack.pop()
        grid[i][j] = False
        continue
    while stack and stack[-1][0] < 4:
        di, dj = d[stack[-1][0]]
        ni = i+di
        nj = j+dj
        stack[-1][0] += 1
        if 0 <= ni < h and 0 <= nj < w and (not grid[ni][nj]):
            pass
        else:
            continue
        cnt = 0
        for y in range(4):
            ddi, ddj = d[y]
            if 0 <= ni+ddi < h and 0 <= nj+ddj < w:
                cnt += grid[ni+ddi][nj+ddj]
        if cnt == 1:
            stack.append([0, ni, nj])
            grid[ni][nj] = True
            break

print(ans)
0