白駿7576号:トマト
白駿7576号:トマト
これは典型的なBFS問題である.初めてのスタート時には、熟したトマトをDequeに入れ、上下左右に1マスずつ、熟したトマトがあるかどうかはDequeに入れます.焼いたトマトを1、2、3、4と表記するよりも...このように順番に表示すると、すべてのトマトが熟成するのに必要な日付が簡単に手に入ります.
これで日付が表示されます.0日から、最後に訪れた図[row][Col]から1を抜くと正解です.
初めてDFSを使用して解凍と挿入を行います.問題を見ると、どうすればいいかを知るまで練習しなければならない.
白駿7569号:トマト問題は似たような問題で、3 Dリストを使用することができます.
アイデア
これは典型的なBFS問題である.初めてのスタート時には、熟したトマトをDequeに入れ、上下左右に1マスずつ、熟したトマトがあるかどうかはDequeに入れます.焼いたトマトを1、2、3、4と表記するよりも...このように順番に表示すると、すべてのトマトが熟成するのに必要な日付が簡単に手に入ります.
これで日付が表示されます.0日から、最後に訪れた図[row][Col]から1を抜くと正解です.
コード#コード#
import sys
from collections import deque
input = sys.stdin.readline
M, N = map(int, input().split())
tomatoBox = [list(map(int, input().split())) for _ in range(N)]
dy = [1, -1, 0, 0]
dx = [0, 0, 1, -1]
def bfs(graph):
row, col = 0, 0
dq = deque()
for i in range(N):
for j in range(M):
if graph[i][j] == 1:
dq.append([i, j])
while dq:
row, col = dq.popleft()
for i in range(4):
if 0 <= row + dy[i] < N and 0 <= col + dx[i] < M:
if graph[row + dy[i]][col + dx[i]] == 0:
dq.append([row + dy[i], col + dx[i]])
graph[row + dy[i]][col + dx[i]] = graph[row][col] + 1
for i in graph:
if 0 in i:
return -1
return graph[row][col] - 1
print(bfs(tomatoBox))
おしゃべり
初めてDFSを使用して解凍と挿入を行います.問題を見ると、どうすればいいかを知るまで練習しなければならない.
白駿7569号:トマト問題は似たような問題で、3 Dリストを使用することができます.
import sys
from collections import deque
input = sys.stdin.readline
M, N, H = map(int, input().split())
tomatoBox = [[list(map(int, input().split())) for _ in range(N)] for _ in range(H)]
dy = [1, -1, 0, 0, 0, 0]
dx = [0, 0, 1, -1, 0, 0]
dz = [0, 0, 0, 0, 1, -1]
def bfs(graph):
height, row, col = 0, 0, 0
dq = deque()
for i in range(H):
for j in range(N):
for k in range(M):
if graph[i][j][k] == 1:
dq.append([i, j, k])
while dq:
height, row, col = dq.popleft()
for i in range(6):
if 0 <= height + dz[i] < H and 0 <= row + dy[i] < N and 0 <= col + dx[i] < M:
if graph[height + dz[i]][row + dy[i]][col + dx[i]] == 0:
dq.append([height + dz[i], row + dy[i], col + dx[i]])
graph[height + dz[i]][row + dy[i]][col + dx[i]] = graph[height][row][col] + 1
for i in graph:
for j in i:
if 0 in j:
return -1
return graph[height][row][col] - 1
print(bfs(tomatoBox))
Reference
この問題について(白駿7576号:トマト), 我々は、より多くの情報をここで見つけました https://velog.io/@ks1ksi/백준-7576번-토마토テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol