已结束 GESP巅峰赛#20

A4920 | 捉迷藏

时间限制1s
内存限制128MB
通过 / 提交0/0

题目描述

$Alice$ 和 $Bob$ 在树林里玩捉迷藏。这片树林可以看作一个 $n \times m$ 的网格地图,其中:
- . 表示空地(可以自由移动)。
- X 表示 Bob 的初始位置。
- # 表示树木(障碍物,不可通行)。

$Alice$ 知道 $Bob$ 的位置,并且她掌握了一些改变地形的魔法。她希望通过施展魔法,调整树林的布局,使得自己能够找到一个 $Bob$ 永远无法到达的藏身之处。

$Alice$ 可以施展以下两种魔法(总共最多使用 $40$ 次):
- 行交换魔法:它的使用方法为 $r$ $x$ $y$ ,它可以交换第 $x$ 行和第 $y$ 行的所有格子。
- 列交换魔法,它的使用方法为 $l$ $x$ $y$ ,它可以交换第 $x$ 列和第 $y$ 列的所有格子。

现在给出你树林的初始状态,同时在地图上标注 $Bob$ 的位置,现在 $Alice$ 可以先施展魔法,修改地形,在施展完成之后,选择一个位置藏起来不动。之后 $Bob$ 开始寻找 $Alice$ , $Bob$ 可以向自己上下左右的空地移动,且不限制移动次数,问最终 $Alice$ 能不能有一种策略让 $Bob$ 找不到自己。

输入格式

第一行输入两个整数 $n,m$ 代表着初始树林的地图的行数和列数。

接下来 $n$ 行每行会输入一个长度为 $m$ 的字符串$s_i$ 。

输出格式

第一行输出一个字符串,代表着能否存在着一个策略让 $Bob$ 找不到 $Alice$ ,若存在输出字符串 $Yes$ ,否则输出字符串 $No$ 。

若存在, 第二行输入一个整数 $num$ ,代表着 $Alice$ 施展魔法的次数。

接下来 num 行,每行输入一个字符 ${op}_i$ ,以及两个整数 $x_i$ ,$y_i$ ,输出内容之间用空格隔开,代表着第 $i$ 次施展的魔法。

最后一行输出两个整数, $x_i$ ,$y_i$,输出内容之间用空格隔开 ,代表着Alice 最终躲藏的位置。

输入输出样例

输入 #1
4 4
.X#.
.#..
....
....
输出 #1
Yes
2
l 1 2
l 2 3
1 3
输入 #2
4 4
.X..
....
....
....
输出 #2
No
输入 #3
4 4
X#..
#...
....
....
输出 #3
Yes
0
1 3
C++ 编辑器
输入
输出