Files
Algorithm/백준/16236.py
2026-04-11 11:57:27 +09:00

60 lines
1.4 KiB
Python

import sys
from collections import deque
sys.setrecursionlimit(10**6)
input = sys.stdin.readline
n = int(input())
graph = []
nx = [0, -1, 0, 1]
ny = [1, 0, -1, 0]
tot_feed = 0
result = 0
now_size = 2
for _ in range(n):
graph.append(list(map(int, input().split())))
for i in range(n):
for j in range(n):
if graph[i][j] == 9 :
now_loc = (i, j)
time_loc = (i, j, 0)
elif graph[i][j] != 0:
tot_feed += 1
visited = set(now_loc)
q = deque()
q.append(time_loc)
while q and tot_feed>0:
x, y, time = q.popleft()
for i in range(4):
dx = x + nx[i]
dy = y + ny[i]
if 0<=dx<n and 0<=dy<n:
if (dx, dy) not in visited:
now_value = graph[dx][dy]
if now_value== now_size:
now_size += 1
graph[dx][dy] = 0
tot_feed -= 1
visited.add((dx, dy))
q.append((dx, dy, time+1))
elif now_value<=now_size and now_value!=0:
graph[dx][dy] = 0
tot_feed -= 1
visited.add((dx, dy))
q.append((dx, dy, time+1))
elif now_value == 0:
visited.add((dx, dy))
q.append((dx, dy, time+1))
print(q)
if q:
x,y,time = q.pop()
print(time)
else:
print(0)