結果
| 問題 |
No.157 2つの空洞
|
| コンテスト | |
| ユーザー |
noko2250
|
| 提出日時 | 2015-03-20 20:51:52 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 133 ms / 2,000 ms |
| コード長 | 1,066 bytes |
| コンパイル時間 | 380 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 10,880 KB |
| 最終ジャッジ日時 | 2024-06-28 23:47:43 |
| 合計ジャッジ時間 | 2,151 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 16 |
ソースコード
#!/c/Python34/python
# coding: utf-8
inf = 10**9
def dfs(y, x, val, H, W, C, D):
for dx, dy in zip([0, 1, 0, -1], [-1, 0, 1, 0]):
nx, ny = x+dx, y+dy
if 0 <= nx < W and 0 <= ny < H:
if C[ny][nx] == '.':
if D[ny][nx] <= val:
continue
D[ny][nx] = val
else:
if D[ny][nx] <= val+1:
continue
D[ny][nx] = val + 1
dfs(ny, nx, D[ny][nx], H, W, C, D)
def startPoint(H, W, C):
for y in range(H):
for x in range(W):
if C[y][x] == '.':
return x, y
def main():
[W, H] = map(int, input().split())
C = [input() for _ in range(H)]
D = [[inf] * W for _ in range(H)]
sx, sy = startPoint(H, W, C)
D[sy][sx] = 0
dfs(sy, sx, 0, H, W, C, D)
ans = inf
for y in range(H):
for x in range(W):
if C[y][x] == '.' and D[y][x] > 0:
ans = min(ans, D[y][x])
print(ans)
return
if __name__ == '__main__':
main()
noko2250