Hikenny25
7569 - 토마토 본문
https://www.acmicpc.net/problem/7569
7569번: 토마토
첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100,
www.acmicpc.net
- BFS
import sys
input = sys.stdin.readline
from collections import deque
m, n, h = map(int, input().split())
tomato = [[list(map(int, input().split())) for _ in range(n)] for _ in range(h)]
q = deque()
for k in range(h):
for i in range(n):
for j in range(m):
if tomato[k][i][j] == 1:
q.append([k,i,j])
delta = [(-1,0,0),(1,0,0),(0,-1,0),(0,1,0),(0,0,-1),(0,0,+1)]
predecessor = [[[0] * m for _ in range(n)] for _ in range(h)]
while len(q) != 0:
w, r, c = q.pop()
for k, i, j in delta:
dw = w + k
dr = r + i
dc = c + j
if 0 <= dw < h and 0 <= dr < n and 0 <= dc < m and tomato[dw][dr][dc] == 0:
tomato[dw][dr][dc] = 1
q.appendleft([dw,dr,dc])
predecessor[dw][dr][dc] = predecessor[w][r][c] + 1
for k in range(h):
for i in range(n):
for j in range(m):
if tomato[k][i][j] == 0:
print(-1)
exit()
mi = 0
for k in range(h):
for i in range(n):
for j in range(m):
if predecessor[k][i][j] > mi:
mi = predecessor[k][i][j]
print(mi)
저번 문제랑 똑같음 ㅋㅋ; 몇 개만 수정 후 제출
'baekjoon (solved.ac) > class 3 Solve' 카테고리의 다른 글
5430 - AC (0) | 2022.11.04 |
---|---|
10026 - 적록색약 (0) | 2022.11.03 |
7576 - 토마토 (1) | 2022.11.01 |
5525 - IOIOI (2) | 2022.10.31 |
1992 - 쿼드트리 (0) | 2022.10.31 |
Comments