P4055 [JSOI2009]游戏
对于一个网格,上面有一些障碍物不能走,A选择起点,然后B走到相邻的四个格子之一,然后轮流移动不能移动的一方失败。求解所有可以赢的初始位置。
首先对于这个问题要想到网格图上博弈,两个人走的格子奇偶性不同,所以可以建立二分图,然后轮流移动,现在要求解一个位置满足后手必胜。
那么我们发现这个位置一定不能够在最大匹配上,然后我们只需要求出所有不在最大匹配上的点,但是最大匹配可能有很多方案,我们需要求出所有方案下都不在最大匹配上的点。
具体方法就是先求解最大匹配,然后对于不在上面的点进行dfs,然后如果能够回到同一边,那么将这条路径取反就得到了一条不同的最大匹配,那么这个点就是不合法的。这样就可以得到一定不在最大匹配上的点。
求解一定不在最大匹配上的点,求出一个最大匹配,dfs检验