結果
問題 |
No.157 2つの空洞
|
ユーザー |
![]() |
提出日時 | 2015-12-20 11:29:08 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,048 bytes |
コンパイル時間 | 148 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 16,512 KB |
最終ジャッジ日時 | 2024-09-17 11:57:44 |
合計ジャッジ時間 | 8,007 ms |
ジャッジサーバーID (参考情報) |
judge6 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 8 TLE * 1 -- * 7 |
ソースコード
W, H = map(int, input().split()) maze = [input() for i in range(H)] dist = [[W * H for j in range(W * H)] for j in range(W * H)] for y in range(H): for x in range(W): dist[y * W + x][y * W + x] = 0 for dy, dx in ((0, 1), (0, -1), (-1, 0), (1, 0)): if 0 <= y + dy < H and 0 <= x + dx < W: if maze[y + dy][x + dx] == '#': dist[y * W + x][(y + dy) * W + (x + dx)] = 1 else: dist[y * W + x][(y + dy) * W + (x + dx)] = 0 for k in range(W * H): for i in range(W * H): for j in range(W * H): dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]) min_cost = W * H for y in range(H): for x in range(W): if maze[y][x] == '#': continue for i in range(y, H): for j in range(W): if maze[i][j] == '#': continue if dist[y * W + x][i * W + j] > 0: min_cost = min(min_cost, dist[y * W + x][i * W + j]) print(min_cost)