小慕正在参与一个火星大气改造项目。改造区域被划分为 row × column 的网格,每个网格的状态有三种,分别用 YES、NO、NA 表示: - YES 表示该网格已经是; - NO 表示该网格尚未改造,但未来可以改造; - NA 表示,无法改造成宜居区,也不能穿过。 初始状态下,区域内可能存在多个宜居区。每个,每个宜居区会同时向上下左右四个方向扩散,将相邻的 NO 网格自动改造成新的宜居区。 小慕需要判断:经过若干太阳日后,是否所有(即 NO 网格)都能变成宜居区。如果可以,请返回所需的最少太阳日天数;如果无法全部改造,则返回 -1。
提示:带虚线的词点一下有通俗解释。
输入描述
输入 row * column 个网格数据,每个网格值枚举值如下:YES,NO,NA; 样例: ``` YES YES NO NO NO NO NA NO YES ```
输出描述
可改造区是否能全部变成宜居区,如果可以,则返回改造的太阳日天数,不可以则返回-1。
示例
示例 1
输入
YES YES NO NO NO NO YES NO NO
输出
2
说明:经过 2 个太阳日,完成宜居改造。
示例 2
输入
YES NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO
输出
6
说明:经过 6 个太阳日,可完成改造
示例 3
输入
NO NA
输出
-1
说明:无改造初始条件,无法进行改造
示例 4
输入
YES NO NO YES NO NO YES NO NO YES NA NA YES NO NA NO
输出
-1
说明:输出-1。右下角的区域,被周边三个死亡区挡住,无法实现改造。
时间限制 1000 ms · 内存限制 128 MB