結果
問題 |
No.2928 Gridpath
|
ユーザー |
|
提出日時 | 2025-09-20 13:40:17 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 120 ms / 2,000 ms |
コード長 | 1,433 bytes |
コンパイル時間 | 404 ms |
コンパイル使用メモリ | 82,656 KB |
実行使用メモリ | 76,920 KB |
最終ジャッジ日時 | 2025-09-20 13:40:21 |
合計ジャッジ時間 | 3,264 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 20 |
ソースコード
## https://yukicoder.me/problems/no/2928 def main(): H, W = map(int, input().split()) Si, Sj = map(int, input().split()) Gi, Gj = map(int, input().split()) Si -= 1 Sj -= 1 Gi -= 1 Gj -= 1 passed = [[False] * W for _ in range(H)] passed[Si][Sj] = True def dfs(passed, i0, j0): if (i0, j0) == (Gi, Gj): return 1 answer = 0 for di, dj in ((0, 1), (0, -1), (1, 0), (-1, 0)): new_i = di + i0 new_j = dj + j0 if 0 <= new_i < H and 0 <= new_j < W: if not passed[new_i][new_j]: is_ok = True for di2, dj2 in ((0, 1), (0, -1), (1, 0), (-1, 0)): new_i2 = di2 + new_i new_j2 = dj2 + new_j if 0 <= new_i2 < H and 0 <= new_j2 < W: if (new_i2, new_j2) == (i0, j0): continue if passed[new_i2][new_j2]: is_ok = False break if is_ok: passed[new_i][new_j] = True answer += dfs(passed, new_i, new_j) passed[new_i][new_j] = False return answer ans = dfs(passed, Si, Sj) print(ans) if __name__ == "__main__": main()