腐烂的橘子: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 个方向传播。
练习建议
先根据输入输出格式写出可运行程序,再用公开样例检查结果;遇到边界情况时,补充自测用例后提交。