結果
問題 | No.157 2つの空洞 |
ユーザー |
|
提出日時 | 2024-03-21 15:15:10 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 68 ms / 2,000 ms |
コード長 | 1,812 bytes |
コンパイル時間 | 172 ms |
コンパイル使用メモリ | 82,048 KB |
実行使用メモリ | 65,024 KB |
最終ジャッジ日時 | 2024-09-30 10:07:47 |
合計ジャッジ時間 | 2,273 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 16 |
ソースコード
import sysimport mathimport bisectfrom heapq import heapify, heappop, heappushfrom collections import deque, defaultdict, Counterfrom functools import lru_cachefrom itertools import accumulate, combinations, permutations, productsys.setrecursionlimit(1000000)MOD = 10 ** 9 + 7MOD99 = 998244353input = lambda: sys.stdin.readline().strip()NI = lambda: int(input())NMI = lambda: map(int, input().split())NLI = lambda: list(NMI())SI = lambda: input()SMI = lambda: input().split()SLI = lambda: list(SMI())EI = lambda m: [NLI() for _ in range(m)]def main():W, H = NMI()C = [SI() for _ in range(H)]for h in range(H):for w in range(W):if C[h][w] == ".":start = [h, w]queue = deque()queue.append(start)steps = [[-1] * W for _ in range(H)]steps[start[0]][start[1]] = 0DH = [0, 0, 1, -1]DW = [1, -1, 0, 0]while queue:now_h, now_w = queue.popleft()now_step = steps[now_h][now_w]for dh, dw in zip(DH, DW):goto_h = now_h + dhgoto_w = now_w + dwif goto_h < 0 or goto_h >= H or goto_w < 0 or goto_w >= W:continueif C[goto_h][goto_w] == "#":goto_step = now_step + 1else:goto_step = now_stepif 0 <= steps[goto_h][goto_w] <= goto_step:continueif C[goto_h][goto_w] == "#":queue.append((goto_h, goto_w))else:queue.appendleft((goto_h, goto_w))if C[now_h][now_w] == "#" and C[goto_h][goto_w] == ".":print(now_step)returnsteps[goto_h][goto_w] = goto_stepprint(*steps, sep="\n")if __name__ == "__main__":main()