[Noi2011]兔兔与蛋蛋
兔兔和蛋蛋在一个 行 列的棋盘上进行游戏。棋盘上除一个空格外,每个格子中都有一枚黑棋或白棋。兔兔执白棋,用 O 表示;蛋蛋执黑棋,用 X 表示。兔兔先手,双方轮流操作。
每次操作时,当前玩家必须选择一枚与空格有公共边的己方棋子,将它移入空格;该棋子原来所在的格子随即成为新的空格。若轮到某位玩家时不存在合法操作,则该玩家失败,另一位玩家获胜。
对于兔兔的某次操作,如果在操作前的局面中兔兔存在必胜策略,而执行输入给出的这次操作后,在轮到蛋蛋的局面中蛋蛋存在必胜策略,则称兔兔的这次操作“犯错误”。请输出所给游戏过程中兔兔所有犯错误的操作编号。
输入格式
输入的第一行包含两个正整数 、。
接下来 行描述初始棋盘。其中第 行包含 个字符,每个字符都是大写英文字母 X、大写英文字母 O 或点号 . 之一,分别表示对应的棋盘格中有黑色棋子、有白色棋子和没有棋子。其中点号 . 恰好出现一次。
接下来一行包含一个整数 ,其中 ,表示兔兔和蛋蛋各进行了 次操作。
接下来 行描述一局游戏的过程。其中第 行是兔兔的第 次操作,编号为 的操作;第 行是蛋蛋的第 次操作。每个操作使用两个整数 、 来描述,表示将第 行第 列中的棋子移进空格中。
输入保证整个棋盘中只有一个格子没有棋子,游戏过程中兔兔和蛋蛋的每个操作按照上述规则都是合法的,且最后蛋蛋获胜。
输出格式
输出文件的第一行包含一个整数 ,表示兔兔犯错误的总次数。
接下来 行按递增的顺序给出兔兔“犯错误”的操作编号。其中第 行包含一个整数 ,表示兔兔第 个犯错误的操作是他在游戏中的第 次操作。
样例输入
样例
1 6
XO.OXO
1
1 2
1 1
样例
3 3
XOX
O.O
XOX
4
2 3
1 3
1 2
1 1
2 1
3 1
3 2
3 3
样例
4 4
OOXX
OXXO
OO.O
XXXO
2
3 2
2 2
1 2
1 3
样例输出
样例
1
1
样例
0
样例
2
1
2
数据范围
- ;
- ;
- 。
来源与许可
本题为 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