백준 - 그래프(# 7576)
https://www.acmicpc.net/problem/7576
Code
m, n = map(int, input().split())
boxes = []
for _ in range(n):
boxes.append(list(map(int, input().split())))
stack = []
for i in range(n):
for j in range(m):
if boxes[i][j] == 1:
stack.append([i,j])
cnt = 0
while True:
nxt_stack = []
while stack:
x, y = stack.pop()
if x > 0 and boxes[x-1][y] == 0:
boxes[x-1][y] = 1
nxt_stack.append([x-1,y])
if x < n-1 and boxes[x+1][y] == 0:
boxes[x+1][y] = 1
nxt_stack.append([x+1,y])
if y > 0 and boxes[x][y-1] == 0:
boxes[x][y-1] = 1
nxt_stack.append([x,y-1])
if y < m-1 and boxes[x][y+1] == 0:
boxes[x][y+1] = 1
nxt_stack.append([x,y+1])
if nxt_stack :
stack = nxt_stack
cnt += 1
else :
break
for i in range(n):
if 0 in boxes[i]:
cnt = -1
break
print(cnt)
참고
그날 익은 토마토를 stack에 넣고, 그 다음날 익을 토마토로 업데이트 해주며 익을 수 있는 토마토를 모두 익힌 뒤, 결과를 확인한다.
Author And Source
이 문제에 관하여(백준 - 그래프(# 7576)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@starteon/백준-그래프-7576저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)