λ¬Έμ
https://www.acmicpc.net/problem/7569
7569λ²: ν λ§ν
첫 μ€μλ μμμ ν¬κΈ°λ₯Ό λνλ΄λ λ μ μ M,Nκ³Ό μμμ¬λ €μ§λ μμμ μλ₯Ό λνλ΄λ Hκ° μ£Όμ΄μ§λ€. Mμ μμμ κ°λ‘ μΉΈμ μ, Nμ μμμ μΈλ‘ μΉΈμ μλ₯Ό λνλΈλ€. λ¨, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100,
www.acmicpc.net
νμ΄
BFSλ‘ μ½κ² ν μ μμ§λ§ 3μ°¨μ λ°°μ΄μ μ¬μ©νλ€ λ³΄λ μΈλ±μ€ λΆλΆμ μ μ΄ν΄λ³΄λλ‘ νμ
# λ°±μ€ 7569λ² λ¬Έμ - ν λ§ν
from collections import deque
import sys
input = sys.stdin.readline
dx=[0,0,-1,1,0,0] # λμ΄
dy=[1,-1,0,0,0,0]
dz=[0,0,0,0,1,-1]
m,n,h = map(int, input().split())
graph = []
queue = deque()
for i in range(h):
temp = []
for j in range(n):
temp.append(list(map(int, input().split())))
for k in range(m):
if temp[j][k] == 1:
queue.append([i,j,k])
graph.append(temp)
def bfs():
while queue:
x,y,z = queue.popleft()
# i κ° λμ΄
# j κ° n
# k κ° m
for i in range(6):
nx = x + dx[i]
ny = y + dy[i]
nz = z + dz[i]
# nx : λμ΄λ₯Ό λμΌλ©΄ μλ¨
# ny : nμ λμΌλ©΄ μλ¨
# nz : mμ λμΌλ©΄ μλ¨
if 0<=nx<h and 0<=ny<n and 0<=nz<m and graph[nx][ny][nz] == 0:
graph[nx][ny][nz] = graph[x][y][z] + 1
queue.append((nx,ny,nz))
bfs()
answer = 0
for i in graph:
for j in i:
for k in j:
if k == 0:
print(-1)
exit(0)
answer = max(answer, max(j))
print(answer - 1)
'ποΈ Algorithm > π© λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
π© [λ°±μ€] [Python] [BFS/DFS] 2644λ²_μ΄μκ³μ° (0) | 2022.11.17 |
---|---|
π© [λ°±μ€] [Python] [BFS/DFS] 5014λ²_μ€ννΈλ§ν¬ (0) | 2022.11.17 |
π© [λ°±μ€] [Python] [BFS/DFS] 10026λ²_μ λ‘μμ½ (0) | 2022.11.17 |
π© [λ°±μ€] [Python] [BFS/DFS] 4963λ²_μ¬μ κ°μ (0) | 2022.11.16 |
π© [λ°±μ€] [Python] [BFS/DFS] 7562λ²_λμ΄νΈμ μ΄λ (0) | 2022.11.16 |