P8346 「Wdoi-6」最澄澈的空与海
题意
给定一个 \(2n\) 个点,\(m\) 条边的二分图,判断完美匹配数量是否为 \(1\)。
\(n \le 10 ^ 6\)
Sol
考虑加点的过程,对于一个唯一完美匹配的二分图,新增一对节点,考虑使得当前匹配并不唯一的情况。
注意到新增的点有一个度数为 \(1\),则新二分图完美匹配依旧唯一,因此可以发现唯一完美匹配的二分图的必要条件为至少有一个点度数为 \(1\)。
判掉这个依然没有做完,我们还需要判掉没有完美匹配的二分图。
注意到度数为 \(1\) 的点,可以发现该点匹配的下一个节点是确定的。
考虑倒着删点,将刚才的过程倒过来,不难发现这样就可以得到匹配方案了。
不用考虑当前没有 \(1\) 度点的情况,该问题显然是子问题,若没有 \(1\) 度点,那么就有多种完美匹配了。