結果
| 問題 |
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()