P1151

[Noi2011]兔兔与蛋蛋

[Noi2011]兔兔与蛋蛋

兔兔和蛋蛋在一个 nn 行 mm 列的棋盘上进行游戏。棋盘上除一个空格外,每个格子中都有一枚黑棋或白棋。兔兔执白棋,用 O 表示;蛋蛋执黑棋,用 X 表示。兔兔先手,双方轮流操作。

每次操作时,当前玩家必须选择一枚与空格有公共边的己方棋子,将它移入空格;该棋子原来所在的格子随即成为新的空格。若轮到某位玩家时不存在合法操作,则该玩家失败,另一位玩家获胜。

对于兔兔的某次操作,如果在操作前的局面中兔兔存在必胜策略,而执行输入给出的这次操作后,在轮到蛋蛋的局面中蛋蛋存在必胜策略,则称兔兔的这次操作“犯错误”。请输出所给游戏过程中兔兔所有犯错误的操作编号。

输入格式

输入的第一行包含两个正整数 nn、mm。

接下来 nn 行描述初始棋盘。其中第 ii 行包含 mm 个字符,每个字符都是大写英文字母 X、大写英文字母 O 或点号 . 之一,分别表示对应的棋盘格中有黑色棋子、有白色棋子和没有棋子。其中点号 . 恰好出现一次。

接下来一行包含一个整数 kk,其中 1≤k≤10001\le k\le 1000,表示兔兔和蛋蛋各进行了 kk 次操作。

接下来 2k2k 行描述一局游戏的过程。其中第 2i−12i-1 行是兔兔的第 ii 次操作,编号为 ii 的操作;第 2i2i 行是蛋蛋的第 ii 次操作。每个操作使用两个整数 xx、yy 来描述,表示将第 xx 行第 yy 列中的棋子移进空格中。

输入保证整个棋盘中只有一个格子没有棋子,游戏过程中兔兔和蛋蛋的每个操作按照上述规则都是合法的,且最后蛋蛋获胜。

输出格式

输出文件的第一行包含一个整数 rr,表示兔兔犯错误的总次数。

接下来 rr 行按递增的顺序给出兔兔“犯错误”的操作编号。其中第 ii 行包含一个整数 aia_i,表示兔兔第 ii 个犯错误的操作是他在游戏中的第 aia_i 次操作。

样例输入

样例 11

1 6
XO.OXO
1
1 2
1 1

样例 22

3 3
XOX
O.O
XOX
4
2 3
1 3
1 2
1 1
2 1
3 1
3 2
3 3

样例 33

4 4
OOXX
OXXO
OO.O
XXXO
2
3 2
2 2
1 2
1 3

样例输出

样例 11

1
1

样例 22

0

样例 33

2
1
2

数据范围

  • 1≤n≤401\le n\le 40;
  • 1≤m≤401\le m\le 40;
  • 1≤k≤10001\le k\le 1000。

来源与许可

本题为 NOI 2011 试题「兔兔与蛋蛋」,题面与测试数据整理自 BZOJ。

样例 1

输入

1 6
XO.OXO
1
1 2
1 1

输出

1
1

样例 2

输入

3 3
XOX
O.O
XOX
4
2 3
1 3
1 2
1 1
2 1
3 1
3 2
3 3

输出

0

样例 3

输入

4 4
OOXX
OXXO
OO.O
XXXO
2
3 2
2 2
1 2
1 3

输出

2
1
2