Hall 定理学习
本来以为 Hall 定理是对于二分图匹配的,做到这道题发现可以推广,尝试自己证明。
Hall 定理
对于一张二分图,左部点集合为 \(S\),右部点为 \(T\),\(|S|=|T|\)。每个点 \(i\) 有个数,用 \(a_i\) 表示。
有边集 \(E=\{(x,y)|x\in S,y\in S\}\),表示从点 \(x\) 连到点 \(y\) 有一次匹配,注意可以有重边。
一个完美匹配是一个 \(E\) 的子集,使得每个点匹配恰好 \(a_i\) 条边。
\(|S|\leq |N(S)|\) 是二分图有完美匹配的充要条件。
分析
其实这里可以把点 \(i\) 拆成 \(a_i\) 个一样的点,然后把边依次连给拆出来的每个点。但是笔者想保留原条件。
证明
必要性显然,略。
充分性,考虑归纳,设 \(n=|S|=|T|\)。
对于 \(n=1\) 显然成立。
假设 \(n\leq k\) 都成立。对于 \(n=k+1\) 的情况:
如果存在 \(s \subsetneq S,t=N(s) \subseteq T,\sum_{i\in s}a_i=\sum_{i\in t}a_i\),那么分 \(\overline S\cup N(\overline S)\),\(S,\cup N( S)\)两个点集以及其子图来考虑,归纳下去。
如果不存在,那么随便找到一条边 \((x,y)\),将 \(a_x:=a_x-1,a_y:=a_y-1\),匹配掉,删去这条边。可见条件在剩下的图仍然满足。归纳下去。\(\blacksquare\)
参考资料
https://www.cnblogs.com/yspm/p/15184873.html
https://www.luogu.com.cn/problem/P9339