1404: 一箱桔子

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:62 Solved:21

Description

         桔子存放在 m x n 网格 grid 中,存放时若有己腐烂的桔子在其中,则每过一分钟,腐烂的子周围 4 个方向上相邻的新鲜子都会腐烂。  用数字表示每个单元格的状态:
                数字 0 代表空单元格;
                数字 1 代表新鲜桔子;
                数字 2 代表腐烂的子。
          请你返回直到单元格中没有一个新鲜子为止所必须经过的最小分钟数。如果不可能,返回 -1 。



示例 1:
输入:grid = [[2,1,1],[1,1,0],[0,1,1]]
输出:4
解释:见上面动图示例,经过四分钟桔子全部腐烂。


示例 2:
输入:grid = [[2,1,1],[0,1,1],[1,0,1]]
输出:-1
解释:左下角的子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个正方向上。


示例 3:
输入:grid = [[0,2]]
输出:0
解释:因为 0 分钟时已经没有新鲜子了,所以答案就是 0 

Input

           输入第一行为 grid 两维数组的行数 m 列数 n 。以下 m 行为 grid 两维数组的每一行数据。 数字 0 代表空单元格;数字 1 代表新鲜桔子;数字 2 代表腐烂的子。数字间空格分隔。( grid 两维数组只含有0,1与2 ) 

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 。