A46942.捉迷藏

普及+/提高

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

AliceAliceBobBob 在树林里玩捉迷藏。这片树林可以看作一个 n×mn \times m 的网格地图,其中:

  • . 表示空地(可以自由移动)。
  • X 表示 Bob 的初始位置。
  • # 表示树木(障碍物,不可通行)。

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

AliceAlice 可以施展以下两种魔法(总共最多使用 4040 次):

  • 行交换魔法:它的使用方法为 rr xx yy ,它可以交换第 xx 行和第 yy 行的所有格子。
  • 列交换魔法,它的使用方法为 ll xx yy ,它可以交换第 xx 列和第 yy 列的所有格子。

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

输入格式

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

接下来 nn 行每行会输入一个长度为 mm 的字符串sis_i

输出格式

第一行输出一个字符串,代表着能否存在着一个策略让 BobBob 找不到 AliceAlice ,若存在输出字符串 YesYes ,否则输出字符串 NoNo

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

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

最后一行输出两个整数, xix_i ,yiy_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

说明/提示

数据范围

  • 1n,m106,2n×m1061\le n,m \le 10^6 ,2 \le n \times m \le 10^6
  • 输入地图每一个的字符串 sis_i ,其字符 sijs_{ij} \in {. , # , X}
  • 对于整个地图保证:保证地图中恰好包含一个 X,保证至少存在一个空地 。

输出格式要求

  • 0num400 \le num \le 40
  • opi{op}_i \in { r , l }
  • 如果 opi{op}_i = l ,那么 1xi,yim1 \le x_i,y_i \le m ,如果 opi{op}_i = r ,那么 1xi,yin1 \le x_i,y_i \le n

样例解释

对于样例一,在 AliceAlice 施展完魔法后 ,地图变成下图 :

X#..
#...
....
....

之后 AliceAlice 躲在坐标 (1,3)(1 , 3) , BobBob 无法移动至坐标 (1,3)(1 , 3) , AliceAlice 获胜。

首页