AT_abc243_h [ABC243Ex] Builder Takahashi (Enhanced version)

题目描述

有一个 $H \times W$ 的网格。第 $i$ 行第 $j$ 列的格子记作 $(i,j)$。 每个格子的状态用 $C_{i,j}$ 表示。每个格子的状态有以下四种之一: - `S`:起点。网格上恰好有且仅有一个。 - `G`:终点。网格上恰好有且仅有一个。 - `.`:可以建墙的格子。 - `O`:不可以建墙的格子。 青木君从起点出发,在网格上移动,目标是到达终点。青木君在 $(i,j)$ 时,可以移动到 $(i+1,j)$、$(i,j+1)$、$(i-1,j)$、$(i,j-1)$ 中的任意一个格子。只是,不能移动到网格外,也不能移动到有墙的格子。 高桥君可以在青木君开始移动之前,选择至少一个可以建墙的格子建墙,使得无论青木君如何移动,都无法到达终点。起点和终点不能建墙。 请问高桥君能否通过建墙让青木君无法到达终点?如果可以,请计算: - 使青木君无法到达终点所需建墙的最小格子数 $n$,以及 - 达成最小建墙数的方案数对 $998244353$ 取模的结果 $r$ 请输出上述两个整数。

输入格式

输入按以下格式从标准输入给出。 > $H$ $W$ > $C_{1,1}$ $C_{1,2}$ $\dots$ $C_{1,W}$ > $C_{2,1}$ $C_{2,2}$ $\dots$ $C_{2,W}$ > $\vdots$ > $C_{H,1}$ $C_{H,2}$ $\dots$ $C_{H,W}$

输出格式

如果高桥君可以通过建墙让青木君无法到达终点,输出字符串 `Yes`,以及题目中定义的整数 $n$、$r$,格式如下: > Yes $n$ $r$ 否则输出 `No`。

说明/提示

### 限制 - $2 \leq H \leq 100$ - $2 \leq W \leq 100$ - $C_{i,j}$ 只可能是 `S`、`G`、`.`、`O` 之一。 - `S`、`G` 在 $C_{i,j}$ 中各出现且仅出现一次。 ### 样例解释 1 用 `#` 表示建墙的格子,最小建墙数的方案如下,共有 $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 无论高桥君如何建墙,青木君都能到达终点。 由 ChatGPT 4.1 翻译