結果

問題 No.2928 Gridpath
ユーザー noriaokinoriaoki
提出日時 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
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 38 ms
51,968 KB
testcase_01 AC 39 ms
52,608 KB
testcase_02 AC 93 ms
76,288 KB
testcase_03 AC 38 ms
52,096 KB
testcase_04 AC 37 ms
51,968 KB
testcase_05 AC 50 ms
61,440 KB
testcase_06 AC 88 ms
76,160 KB
testcase_07 AC 41 ms
52,480 KB
testcase_08 AC 39 ms
51,968 KB
testcase_09 AC 73 ms
69,760 KB
testcase_10 AC 46 ms
59,392 KB
testcase_11 AC 41 ms
52,096 KB
testcase_12 AC 39 ms
52,096 KB
testcase_13 AC 38 ms
52,480 KB
testcase_14 AC 39 ms
52,480 KB
testcase_15 AC 94 ms
76,288 KB
testcase_16 AC 89 ms
76,416 KB
testcase_17 AC 87 ms
76,032 KB
testcase_18 AC 112 ms
76,844 KB
testcase_19 AC 133 ms
77,036 KB
testcase_20 AC 41 ms
51,840 KB
testcase_21 AC 121 ms
76,360 KB
testcase_22 AC 110 ms
76,288 KB
権限があれば一括ダウンロードができます

ソースコード

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