import random as r from collections import deque def generate_random_matrix(N, M): """ Генерирует матрицу N x M со случайными значениями 0, 1, 2 """ matrix = [[0] * M for _ in range(N)] for i in range(N): for j in range(M): matrix[i][j] = r.randint(0, 2) return matrix def count_good_apples(matrix): count = 0 for row in matrix: count += row.count(1) return count def solve_minutes(matrix): if not matrix or not matrix[0]: return -1 N = len(matrix) M = len(matrix[0]) queue = deque() good_count = 0 matrix_copy = [row[:] for row in matrix] for i in range(N): for j in range(M): if matrix_copy[i][j] == 2: queue.append((i, j, 0)) elif matrix_copy[i][j] == 1: good_count += 1 if good_count == 0: return 0 directions = [(-1, 0), (1, 0), (0, -1), (0, 1)] minutes = 0 while queue: i, j, time = queue.popleft() minutes = max(minutes, time) for di, dj in directions: ni, nj = i + di, j + dj if 0 <= ni < N and 0 <= nj < M and matrix_copy[ni][nj] == 1: matrix_copy[ni][nj] = 2 good_count -= 1 queue.append((ni, nj, time + 1)) return minutes if good_count == 0 else -1 def print_matrix(matrix): for row in matrix: print("\t".join(map(str, row))) def main(): print("Миграция червяков по яблокам") N = int(input("\nВведите количество строк N: ")) M = int(input("Введите количество столбцов M: ")) matrix = generate_random_matrix(N, M) print("\nСгенерированная матрица:") print_matrix(matrix) good_before = count_good_apples(matrix) print(f"Количество хороших яблок изначально: {good_before}") result = solve_minutes(matrix) if result == -1: print("\nРезультат: -1 (червяки не научились летать)") else: print(f"\nРезультат: {result} минут") if __name__ == "__main__": main()