Problem A: 海洋考察员

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:134 Solved:55

Description

          海洋考察员有一份大小为 n x n 的 网格 grid,上面的每个 单元格 都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,海洋考察员要标注出每一个海洋单元格到离它最近的陆地单元格的距离,现在需要找出其中最远的距离是多少? 即求出每一个海洋区域(grid[i][j] == 0 的区域)的 "最近陆地区域",并且记录下它们的距离,然后在这些距离里面取一个最大值输出。如果网格上只有陆地或者只有海洋,请返回 -1。

示例 1:

输入:n=3, grid[][] = { {1,0,1}, {0,0,0}, {1,0,1} };
输出:2
解释: 海洋单元格 (1, 1) 和所有陆地单元格之间的距离都达到最大,最大距离为 2。

示例 2:
.
输入:n=3, grid[][] = { {1,0,1}, {0,0,0},{0,0,0} };
输出:3
解释:标注红圈的海洋单元格 (2, 1) 和陆地单元格之间的距离达到最大,最大距离为 3。

Input

        输入第一行为n*n的 grid 两维数组的行数 n 。以下 n 行为 grid 两维数组的每一行数据。数字间空格分隔。

Output

          求出每一个海洋区域(grid[i][j] == 0 的区域)的「最近陆地区域」,并且记录下它们的距离,然后在这些距离里面取一个最大值输出。
         如果网格上只有陆地或者只有海洋,请返回 -1。

Sample Input Copy

3
1 0 1
0 0 0
0 0 0

Sample Output Copy

3

HINT

   提示:
  •  n 的长度在范围 [1, 50] 内。
  • 给出的 grid二维数组只含有 0 与 1 。