#aBC243EX. [ABC243Ex] Builder Takahashi (Enhanced version)

[ABC243Ex] Builder Takahashi (Enhanced version)

AT_abc243_h [ABC243Ex] Builder Takahashi (Enhanced version)

题目描述

有一个 H×WH \times W 的网格。第 ii 行第 jj 列的格子记作 (i,j)(i,j)
每个格子的状态用 Ci,jC_{i,j} 表示。每个格子的状态有以下四种之一:

  • S:起点。网格上恰好有且仅有一个。
  • G:终点。网格上恰好有且仅有一个。
  • .:可以建墙的格子。
  • O:不可以建墙的格子。

青木君从起点出发,在网格上移动,目标是到达终点。青木君在 (i,j)(i,j) 时,可以移动到 (i+1,j)(i+1,j)(i,j+1)(i,j+1)(i1,j)(i-1,j)(i,j1)(i,j-1) 中的任意一个格子。只是,不能移动到网格外,也不能移动到有墙的格子。

高桥君可以在青木君开始移动之前,选择至少一个可以建墙的格子建墙,使得无论青木君如何移动,都无法到达终点。起点和终点不能建墙。

请问高桥君能否通过建墙让青木君无法到达终点?如果可以,请计算:

  • 使青木君无法到达终点所需建墙的最小格子数 nn,以及
  • 达成最小建墙数的方案数对 998244353998244353 取模的结果 rr

请输出上述两个整数。

输入格式

输入按以下格式从标准输入给出。

HH WW
C1,1C_{1,1} C1,2C_{1,2} \dots C1,WC_{1,W}
C2,1C_{2,1} C2,2C_{2,2} \dots C2,WC_{2,W}
\vdots
CH,1C_{H,1} CH,2C_{H,2} \dots CH,WC_{H,W}

输出格式

如果高桥君可以通过建墙让青木君无法到达终点,输出字符串 Yes,以及题目中定义的整数 nnrr,格式如下:

Yes nn rr

否则输出 No

输入输出样例 #1

输入 #1

4 3
S..
O..
..O
..G

输出 #1

Yes
3 6

输入输出样例 #2

输入 #2

3 2
.G
.O
.S

输出 #2

No

输入输出样例 #3

输入 #3

2 2
S.
.G

输出 #3

Yes
2 1

输入输出样例 #4

输入 #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

说明/提示

限制

  • 2H1002 \leq H \leq 100
  • 2W1002 \leq W \leq 100
  • Ci,jC_{i,j} 只可能是 SG.O 之一。
  • SGCi,jC_{i,j} 中各出现且仅出现一次。

样例解释 1

# 表示建墙的格子,最小建墙数的方案如下,共有 66 种:

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

无论高桥君如何建墙,青木君都能到达终点。

由 ChatGPT 4.1 翻译