CF329A Purification
题目描述
你是一名冒险者,正在一座邪恶神庙中冒险。在击败了几只弱小的僵尸后,你来到一个由 $n \times n$ 的方形地砖组成的房间。行号从上到下为 $1$ 到 $n$,列号从左到右为 $1$ 到 $n$。在房间的远端,有一道被邪恶魔法封印的门。门上刻着如下铭文:
净化所有的邪恶,才能唤醒大门!
作为一名经验丰富的冒险者,你立刻明白了这句话的含义。你注意到网格里的每一个格子最初都是邪恶的。你需要净化所有这些格子。
你唯一会的地砖净化方法就是施放“净化”魔法。你每次在一个格子上施法后,在该格子所在的整行和整列的所有格子(包括施法的格子)都会被净化!一个格子可以被多次净化。
你希望用最少的“净化”魔法次数来净化所有 $n \times n$ 个格子。不过,这并没有你想象得那么简单——因为你发现有些格子比其它格子更加邪恶。你不能在这些格子上施放“净化”魔法,哪怕它们已经被净化了也不行。但若与这些格子同一行或同一列的其它格子被施法,这些更加邪恶的格子也会被净化。
请你用最少的魔法次数净化所有格子。如果无法净化全部格子,输出 $-1$。
输入格式
第一行包含一个整数 $n$($1\leq n\leq 100$)。接下来的 $n$ 行,每行包含 $n$ 个字符。第 $i$ 行第 $j$ 个字符表示网格第 $i$ 行第 $j$ 列的格子。如果为 'E',表示这个格子更加邪恶,不能在这里施法;如果为 '.',表示普通格子。
输出格式
如果存在一种方式能够净化所有格子,输出若干行。第一行为一个整数 $x$,表示你至少需要施放 $x$ 次“净化”魔法。接下来的 $x$ 行,每行包含两个整数,表示你应当在哪一行哪一列的格子上施法。
如果无法净化所有格子,输出 $-1$。
说明/提示
第一个样例可以用下图说明。紫色格子为尚未净化的邪恶格子,红色格子为当前施法的格子,黄色格子为因本次施法被净化的格子,绿色格子为之前已经被净化的格子。

第二个样例中,对于第 $1$ 行第 $1$ 列的格子无法净化。
对于第三个样例:

由 ChatGPT 5 翻译