restructure zeta/** to storage/zeta/**
This commit is contained in:
44
storage/zeta/py/completed/7569.py
Normal file
44
storage/zeta/py/completed/7569.py
Normal file
@@ -0,0 +1,44 @@
|
||||
def check(U):
|
||||
for i in U:
|
||||
for j in i:
|
||||
for k in j:
|
||||
if k == 0:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def solve(M, N, H, U, ir):
|
||||
step = 0
|
||||
delta = ((-1, 0, 0), (1, 0, 0), (0, -1, 0), (0, 1, 0), (0, 0, -1), (0, 0, 1))
|
||||
rotten = [ir]
|
||||
while not check(U):
|
||||
rotten.append([])
|
||||
for r in rotten[step]:
|
||||
for dm, dn, dh in delta:
|
||||
new = r[0] + dm, r[1] + dn, r[2] + dh
|
||||
if 0 <= new[0] < M and 0 <= new[1] < N and 0 <= new[2] < H:
|
||||
if U[new[2]][new[1]][new[0]] != 0:
|
||||
continue
|
||||
else:
|
||||
U[new[2]][new[1]][new[0]] = 1
|
||||
rotten[step + 1].append(new)
|
||||
if rotten[-1]:
|
||||
step += 1
|
||||
else:
|
||||
return -1
|
||||
|
||||
return step
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
M, N, H = map(int, input().split())
|
||||
U = [[[None for _ in range(M)] for _ in range(N)] for _ in range(H)] # U[h][n][m]
|
||||
init_rottens = []
|
||||
for h in range(H):
|
||||
for n in range(N):
|
||||
for m, v in enumerate(map(int, input().split())):
|
||||
U[h][n][m] = v
|
||||
if v == 1:
|
||||
init_rottens.append((m, n, h))
|
||||
|
||||
print(solve(M, N, H, U, init_rottens))
|
||||
Reference in New Issue
Block a user