import sys
from collections import deque
input=sys.stdin.readline
dirs=[(1,0),(0,1),(-1,0),(0,-1)]
N=int(input())
def bfs():
count=0
while True:
count+=1
for j in range(len(fire)):
r,c=fire.popleft()
for i in range(4):
nr,nc=r+dirs[i][0],c+dirs[i][1]
if 0>nr or nr>=h or nc<0 or nc>=w:
continue
if building[nr][nc]!='#' and building[nr][nc]!='*':
building[nr][nc]='*'
fire.append([nr,nc])
for j in range(len(sang)):
sr, sc = sang.popleft()
for i in range(4):
nr,nc=sr+dirs[i][0],sc+dirs[i][1]
if 0>nr or nr>=h or nc<0 or nc>=w:
return count
if building[nr][nc]=='.':
building[nr][nc]='@'
sang.append([nr,nc])
if len(sang)==0: return "IMPOSSIBLE"
for _ in range(N):
fire=deque()
sang=deque()
w, h = map(int, input().split())
building=[list(input().strip()) for _ in range(h)]
for r in range(h):
for c in range(w):
if building[r][c]=='@':
sang.append([r,c])
elif building[r][c]=='*':
fire.append([r,c])
print(bfs())
https://www.acmicpc.net/problem/5427
5427번: 불
상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에
www.acmicpc.net
'IT > coding study' 카테고리의 다른 글
[acmicpc] 16933. 벽 부수고 이동하기 3(python) (0) | 2023.08.22 |
---|---|
[acmicpc] 14442. 벽 부수고 이동하기 2(python) (0) | 2023.08.12 |
[acmicpc] 13913. 숨바꼭질 4(python) (0) | 2023.03.28 |
[acmicpc] 16236. 아기상어(python) (0) | 2023.03.19 |
[acmicpc] 1938. 통나무 옮기기(python) (0) | 2023.03.05 |