結果
問題 | No.2928 Gridpath |
ユーザー |
|
提出日時 | 2024-10-12 16:05:46 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 170 ms / 2,000 ms |
コード長 | 1,795 bytes |
コンパイル時間 | 134 ms |
コンパイル使用メモリ | 82,276 KB |
実行使用メモリ | 78,264 KB |
最終ジャッジ日時 | 2024-10-12 16:05:49 |
合計ジャッジ時間 | 2,731 ms |
ジャッジサーバーID (参考情報) |
judge / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 20 |
ソースコード
from collections import dequedef check(order):field = [[1 for _ in range(W)] for _ in range(H)]for o in order:i, j = ofield[i][j] = 0global si, sjglobal gi, gjdeq = deque()deq.append((si, sj))dist = [[INF for _ in range(W)] for _ in range(H)]dist[si][sj] = 0while deq:i, j = deq.popleft()for di, dj in dir:ni = i+dinj = j+djif 0<=ni<H and 0<=nj<W and field[ni][nj]==0:if dist[ni][nj]>dist[i][j]+1:dist[ni][nj] = dist[i][j]+1deq.append((ni, nj))if len(order)-1==dist[gi][gj]:return Trueelse:return Falsedef dfs(i, j, order):global gi, gjif i==gi and j==gj:if check(order):ans.add(tuple(order))returnfor di, dj in dir:ni = i+dinj = j+djif 0<=ni<H and 0<=nj<W and seen[ni][nj]==0:tmp = 0for ddi, ddj in dir:nni = ni+ddinnj = nj+ddjif 0<=nni<H and 0<=nnj<W:if (nni, nnj) in order:tmp+=1if tmp<=1:order.append((ni, nj))seen[ni][nj] = 1dfs(ni, nj, order)order.pop()seen[ni][nj] = 0INF = 10**9import sysimport pypyjitpypyjit.set_param('max_unroll_recursion=-1')input = sys.stdin.readlineH, W = map(int, input().split())si, sj = map(int, input().split())gi, gj = map(int, input().split())si-=1sj-=1gi-=1gj-=1dir = [(0, 1), (1, 0), (-1, 0), (0, -1)]seen = [[0 for _ in range(W)] for _ in range(H)]seen[si][sj] = 1ans = set()order = [(si, sj)]dfs(si, sj, order)print(len(ans))