CodeACM
HOT 100 · 图论 · LC 994

腐烂的橘子:ACM 模式刷题

按标准输入读取测试数据,输出结果后可在 CodeACM 在线运行和提交。

题目描述

在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一:

· 值 0 代表空单元格;

· 值 1 代表新鲜橘子;

· 值 2 代表腐烂的橘子。

每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。

返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1 。

输入格式

第一行输入 m 和 n。

接下来 m 行,每行输入 n 个整数。

输出格式

若所有新鲜橘子最终都能腐烂,输出最少分钟数;否则输出 −1。

数据范围

  • 1 ≤ m, n ≤ 10
  • 0 ≤ grid[i][j] ≤ 2

公开样例

样例 1

输入

3 3
2 1 1
1 1 0
0 1 1

输出

4

腐烂过程分四轮传播。

样例 2

输入

3 3
2 1 1
0 1 1
1 0 1

输出

-1

左下角(第 2 行第 0 列)的新鲜橘子无法被感染,因为腐烂只能沿上下左右 4 个方向传播。

练习建议

先根据输入输出格式写出可运行程序,再用公开样例检查结果;遇到边界情况时,补充自测用例后提交。