A46942.捉迷藏
普及+/提高
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
Alice 和 Bob 在树林里玩捉迷藏。这片树林可以看作一个 n×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 的字符串si 。
输出格式
第一行输出一个字符串,代表着能否存在着一个策略让 Bob 找不到 Alice ,若存在输出字符串 Yes ,否则输出字符串 No 。
若存在, 第二行输入一个整数 num ,代表着 Alice 施展魔法的次数。
接下来 num 行,每行输入一个字符 opi ,以及两个整数 xi ,yi ,输出内容之间用空格隔开,代表着第 i 次施展的魔法。
最后一行输出两个整数, xi ,yi,输出内容之间用空格隔开 ,代表着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
说明/提示
数据范围
- 1≤n,m≤106,2≤n×m≤106
- 输入地图每一个的字符串 si ,其字符 sij∈ {
.
,#
,X
} - 对于整个地图保证:保证地图中恰好包含一个 X,保证至少存在一个空地 。
输出格式要求
- 0≤num≤40
- opi∈ {
r
,l
} - 如果 opi =
l
,那么 1≤xi,yi≤m ,如果 opi =r
,那么 1≤xi,yi≤n 。
样例解释
对于样例一,在 Alice 施展完魔法后 ,地图变成下图 :
X#..
#...
....
....
之后 Alice 躲在坐标 (1,3) , Bob 无法移动至坐标 (1,3) , Alice 获胜。