結果
| 問題 |
No.157 2つの空洞
|
| コンテスト | |
| ユーザー |
cherrypi59
|
| 提出日時 | 2018-06-22 22:02:57 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 30 ms / 2,000 ms |
| コード長 | 956 bytes |
| コンパイル時間 | 86 ms |
| コンパイル使用メモリ | 12,928 KB |
| 実行使用メモリ | 10,880 KB |
| 最終ジャッジ日時 | 2024-06-30 18:06:23 |
| 合計ジャッジ時間 | 1,394 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 16 |
ソースコード
w, h = map(int, input().split())
c = [input() for i in range(h)]
k = set()
def cave(v, a, b):
if a < 0 or h <= a or b < 0 or w <= b:
return
if (a, b) in v:
return
if c[a][b] == "#":
return
v.add((a, b))
k.add((a, b))
cave(v, a-1, b)
cave(v, a+1, b)
cave(v, a, b-1)
cave(v, a, b+1)
def main():
k1, k2 = set(), set()
for i in range(h):
for j in range(w):
if c[i][j] == "." and (i, j) not in k:
if len(k1) == 0:
cave(k1, i, j)
else:
cave(k2, i, j)
min_num = 41
lst1, lst2 = list(k1), list(k2)
for i in range(len(lst1)):
for j in range(len(lst2)):
if abs(lst1[i][0]-lst2[j][0]) + abs(lst1[i][1]-lst2[j][1]) < min_num:
min_num = abs(lst1[i][0]-lst2[j][0]) + abs(lst1[i][1]-lst2[j][1])
print(min_num-1)
if __name__ == '__main__':
main()
cherrypi59