二分图博弈 & 二分图最大匹配的可行边

· · 个人记录

给定一张二分图,有一个起始点 a。两个人轮流选择一个点,这个点需要满足:之前没被选过,且与上一次选择的点有直接连边。谁先不能选择则为输。

结论:如果二分图的所有最大匹配都必须包含点 a,那么先手必胜,否则后手必胜。

证明:

  1. 二分图的所有最大匹配都必须包含点 a,那么先手必胜。

先手先选到 a 的匹配 u 上。后手只能选到一个匹配点上,因为如果后手选到一个不是匹配点的点 v 上,那么一定可以用 u \to v 这条边代替 a \to u 这条边,与二分图的所有最大匹配都必须包含点 a 不符。然后先手又选到那个点的匹配点上。最终一定是后手先无法选择。

  1. 二分图的所有最大匹配不一定包含点 a,那么后手必胜。

考虑一种不包含 a 的最大匹配情况。先手必然先会选到一个匹配点 u 上(否则可以加上 a \to u 这个匹配,与这是最大匹配不符),后手再选 u 的匹配 v。同理先手还是只能选到一个匹配点上,后手再选它的匹配。最终一定是先手先无法选择。

如何判断二分图的所有最大匹配是否都必须包含点 a?我们可以先把连向 a 的所有边全部删了,跑一遍最大匹配,再把这些边加上,再跑一次最大匹配。如果第二次结果变大了,则说明必须包含 a,否则不一定。

询问 x \to y 这条边是否可能出现在二分图最大匹配中。

先用 \text{dinic} 跑出二分图最大匹配,如果 x \to y 已经是匹配边了则肯定是可行边。

现在考虑如果 x \to y 不是匹配边的情况。假设现在 (x \to u),(v \to y) 为匹配边,那么只需要满足 vu 在残留网络中存在增广路就可以将 (x,y) 变为匹配边,又因为残留网络中有 (x \to y),(u \to x),(y \to v) 这些边,所以 xy 在一个环中。这启发我们可以将残留网络进行 \text{tarjan},如果 xy 在同一个强连通分量里的话,那么 x \to y 一定为可行边。

但是有可能 u 找了一个还没有被匹配的 z 作为匹配,这样 x 直接就可以和 y 匹配了。如何解决这种情况?其实我们在 \text{tarjan} 的时候把源点和汇点所连的边也添加进去就行了。因为如果 u 可以找一个还没有被匹配的 z 作为匹配,那么在残留网络中一定会出现这样的环:v \to x \to y \to u \to z \to t \to v,这样这种情况就一定会被考虑到了。