#P2706. Connect

Connect

本题没有可用的提交语言。

描述

| | | |
你的任务是判断棋盘游戏Twixt中指定的移动序列是否以获胜移动结束。

在这个版本的游戏中,可以指定不同的棋盘大小。棋子被放置在棋盘上坐标为[0,N][0, N]范围内的整数位置。玩家黑方和白方使用各自颜色的棋子。黑方总是先手,然后与白方交替进行,每次在一个未被占据的位置(x,y)(x,y)放置一个棋子。黑方的目标区域是xx等于00NN的位置,白方的目标区域是yy等于00NN的位置。任何玩家都不能在对方的目标区域放置棋子。每次移动后,最新放置的棋子会通过一条线段与所有同色棋子相连,这些同色棋子必须满足国际象棋中“马步”的距离(即一个坐标相差22,另一个坐标相差11),并且新线段不能与已添加的线段相交(端点接触除外)。当一方的线段在其目标区域之间形成一条完整的连通路径时,游戏结束,该玩家获胜。

例如,图1展示了N=4N=4的棋盘,经过移动(0,2)(0,2)(2,4)(2,4)(4,2)(4,2)后的状态。图2添加了下一步移动(3,2)(3,2)。图3a展示了黑方下一步的较差选择(2,3)(2,3)。图3b展示了黑方的另一种选择(2,1)(2,1),这一步将赢得游戏。

图4展示了N=7N=7的棋盘,黑方在11步后获胜:
(0,3)(0, 3)(6,5)(6, 5)(3,2)(3, 2)(5,7)(5, 7)(7,2)(7, 2)(4,4)(4, 4)(5,3)(5, 3)(5,2)(5, 2)(4,5)(4, 5)(4,0)(4, 0)(2,4)(2, 4)

输入

输入包含112020个数据集,最后一行是两个零“0 00\ 0”。每个数据集的第一行包含最大坐标NN和总移动次数MM,其中3<N<213 < N < 214<M<2504 < M < 250,且MM为奇数。数据集的其余部分包含MM个坐标对,每行一个或多个对。一行中的所有数字用空格分隔。MM为奇数意味着黑方总是最后一步的玩家。所有数据都是合法的,且不会在最后一步之前出现获胜移动。

输出

对于每个数据集,输出一行:“yes”表示最后一步是获胜移动,“no”表示不是。

输入数据 1

4 5
0 2 2 4 4 2 3 2 2 3
4 5
0 2 2 4 4 2 3 2 2 1
7 11
0 3 6 5 3 2 5 7 7 2 4 4
5 3 5 2 4 5 4 0 2 4
0 0

输出数据 1

no
yes
yes

来源

2005年美国中西部地区竞赛