トマト
質問する
コード#コード#
from collections import deque
import sys
input = sys.stdin.readline
M, N = map(int, input().split())
tmt = [list(map(int, input().split())) for _ in range(N)]
dir = [(-1,0), (1,0), (0,-1), (0,1)]
q = deque()
for i in range(N):
for j in range(M):
if tmt[i][j] == 1:
q.append((i, j))
while q:
i, j = q.popleft()
for k in range(4):
ni, nj = i+dir[k][0], j+dir[k][1]
if 0<=ni<N and 0<=nj<M and tmt[ni][nj] == 0:
tmt[ni][nj] = tmt[i][j] + 1
q.append((ni,nj))
is_ripe = True
mx = 0
for i in tmt:
if 0 in i:
is_ripe = False
break
if mx < max(i):
mx = max(i)
if is_ripe:
print(mx-1)
else:
print(-1)
に答える
和弦はこんなに長くてもいいですか...
減らそうとしても実力が足りない.最短距離の問題はまだ完全に理解されていないようだ.いずれにしても、前に解いたように最短距離(時間秒)で、トマトが入った格子を通るたびに記入します.
そしてbfsを回し終え、0があればトマトがまだ熟していないことを示すので、-1を出力するためにbfsの下にforゲートを回しました.未熟なものをis成熟と表し、mx値を求めて秒数を求める.最初はmax(tmt)でやったけどダメな理由はmax(tmt)だからでは.
だからどうせforは1つの回転の下で一緒にmx値を求めた.
最後のifは、熟成して秒数(-1)を出力できないかどうかを決定する四半期です.
Reference
この問題について(トマト), 我々は、より多くの情報をここで見つけました https://velog.io/@jpdev/7576.-토마토テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol