結果
| 問題 | No.157 2つの空洞 |
| コンテスト | |
| ユーザー |
zombietan
|
| 提出日時 | 2016-05-27 23:28:56 |
| 言語 | Python3 (3.14.2 + numpy 2.4.0 + scipy 1.16.3) |
| 結果 |
AC
|
| 実行時間 | 33 ms / 2,000 ms |
| コード長 | 924 bytes |
| 記録 | |
| コンパイル時間 | 201 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 10,880 KB |
| 最終ジャッジ日時 | 2024-10-07 17:07:58 |
| 合計ジャッジ時間 | 1,646 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 16 |
ソースコード
W,H = map(int, input().split())
C = [input() for _ in range(H)]
reached = [[0 for _ in range(W)] for __ in range(H)]
empty = []
def search(x, y):
if x <= 0 or H <= x-1 or y <= 0 or W <= y-1 or C[x][y] == '#':
return
if reached[x][y]:
return
reached[x][y] = True
empty.append((x, y))
search(x+1, y)
search(x-1, y)
search(x, y+1)
search(x, y-1)
for h in range(H):
for w in range(W):
if C[h][w] == '.':
x1, y1 = h, w
break
else:
continue
break
search(x1, y1)
empty1 = empty[:]
empty.clear()
for h in range(H):
for w in range(W):
t = (h, w)
if C[h][w] == '.' and t not in empty1:
x2, y2 = h, w
break
else:
continue
break
search(x2, y2)
ans = []
for p in empty1:
for q in empty:
ans.append(abs(p[0] - q[0]) + abs(p[1] - q[1]))
print(min(ans)-1)
zombietan