#abc243h. [abc243_h]Builder Takahashi (Enhanced version)
[abc243_h]Builder Takahashi (Enhanced version)
问题描述
有一个 方格网格。 表示从顶部开始第 行第 列的方格。 表示每个方格的状态。每个方格都处于以下四种状态之一。
S
:起点。网格中恰好有一个起点。G
:目标。网格中恰好有一个目标。.
:可建造的方格,可以建墙。O
:不可建造的方格,不能建墙。
Aoki 打算从起点出发到达目标。当他在 位置时,他可以向下一个位置移动到 、、 或 。不允许走出网格或进入带有墙的方格。
Takahashi 决定在 Aoki 出发前选择一个或多个可建造的方格上建墙,以阻止 Aoki 到达目标。这里不能选择起点和目标。
Takahashi 是否可以建立墙壁防止 Aoki 到达目标?如果可能,还需计算以下两个值:
- 防止 Aoki 到达目标所需的最小墙壁数量 ,
- 以 取模的方式实现最小墙壁数量的方法数 。
约束条件
- 的值为
S
、G
、.
或O
。 S
和G
在 中各出现一次。
输入
输入以以下格式从标准输入中给出:
输出
如果可以建墙阻止 Aoki 到达目标,则按照以下格式输出字符串 Yes
和问题描述中定义的整数 和 :
Yes
否则,输出 No
。
示例输入 1
4 3
S..
O..
..O
..G
示例输出 1
Yes
3 6
让 #
表示建墙的方格。实现最小墙壁数量的六种方式如下:
S#. S.# S.. S.. S.. S..
O#. O#. O## O.# O.# O.#
#.O #.O #.O ##O .#O .#O
..G ..G ..G ..G #.G .#G
示例输入 2
3 2
.G
.O
.S
示例输出 2
No
无论 Takahashi 如何建墙,Aoki 总是可以到达目标。
示例输入 3
2 2
S.
.G
示例输出 3
Yes
2 1
示例输入 4
10 10
OOO...OOO.
.....OOO.O
OOO.OO.OOO
OOO..O..S.
....O.O.O.
.OO.O.OOOO
..OOOG.O.O
.O.O..OOOO
.O.O.OO...
...O..O..O
示例输出 4
Yes
10 12