60 lines
1.4 KiB
Python
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) |