Problem A: 一箱桔子
Memory Limit:128 MB
Time Limit:1.000 S
Judge Style:Text Compare
Creator:
Submit:91
Solved:31
Description
桔子存放在 m x n 网格 grid 中,存放时若有己腐烂的桔子在其中,则每过一分钟,腐烂的桔子周围 4 个方向上相邻的新鲜桔子都会腐烂。 用数字表示每个单元格的状态:
数字 0 代表空单元格;
数字 1 代表新鲜桔子;
输入:grid = [[211][110][011]]
输出:4
解释:见上面动图示例,经过四分钟桔子全部腐烂。
示例 2:
输入:grid = [[211][011][101]]
输出:-1
解释:左下角的桔子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个正方向上。
示例 3:
输入:grid = [[02]]
输出:0
解释:因为 0 分钟时已经没有新鲜桔子了,所以答案就是 0
数字 0 代表空单元格;
数字 1 代表新鲜桔子;
数字 2 代表腐烂的桔子。
特别地,单元格中至多有一个烂橘子。
输入:grid = [[211][110][011]]
输出:4
解释:见上面动图示例,经过四分钟桔子全部腐烂。
示例 2:
输入:grid = [[211][011][101]]
输出:-1
解释:左下角的桔子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个正方向上。
示例 3:
输入:grid = [[02]]
输出:0
解释:因为 0 分钟时已经没有新鲜桔子了,所以答案就是 0
Input
输入第一行为 grid 两维数组的行数 m 列数 n 。以下 m 行为 grid 两维数组的每一行数据。 数字 0 代表空单元格;数字 1 代表新鲜桔子;数字 2 代表腐烂的桔子。数字间空格分隔。( grid 两维数组只含有0,1与2,且2的出现次数为0或1)
Output
返回直到 grid单元格中没有一个新鲜桔子为止所必须经过的最小分钟数。如果不可能,返回 -1 。
Sample Input Copy
4 5
0 1 2 1 1
1 1 1 1 0
1 1 0 0 1
0 1 1 1 1
Sample Output Copy
8
HINT
提示:
- m 和 n 的长度在范围 [1, 50] 内。
- 给出的 grid 两维数组只含有0,1与2 。