結果
問題 |
No.2646 Cycle Maze
|
ユーザー |
|
提出日時 | 2024-02-26 19:13:27 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,029 bytes |
コンパイル時間 | 179 ms |
コンパイル使用メモリ | 82,196 KB |
実行使用メモリ | 82,040 KB |
最終ジャッジ日時 | 2024-09-29 11:43:08 |
合計ジャッジ時間 | 10,984 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 WA * 1 |
other | AC * 41 WA * 10 |
ソースコード
from heapq import heappop, heappush H, W, T = map(int, input().split()) sy, sx = map(int, input().split()) gy, gx = map(int, input().split()) grid = [list(input()) for _ in range(H)] sy -= 1 sx -= 1 gy -= 1 gx -= 1 dx = [1, 0, -1, 0] dy = [0, 1, 0, -1] def is_reachable(mid): INF = 10**18 dist = [[INF]*W for _ in range(H)] dist[sy][sx] = 0 heap = [(0, sy, sx)] while heap: d, y, x = heappop(heap) if d > dist[y][x]: continue for i in range(4): nx, ny = x + dx[i], y + dy[i] if nx < 0 or W <= nx or ny < 0 or H <= ny: continue cost = mid if grid[ny][nx] == '#' else 1 if d + cost < dist[ny][nx]: dist[ny][nx] = d + cost heappush(heap, (d + cost, ny, nx)) return dist[gy][gx] <= T left, right = 1, T while right - left > 1: mid = (left + right) // 2 if is_reachable(mid): left = mid else: right = mid print('Yes' if left != 1 else 'No')