图的匹配
定义见:OI-Wiki 图的匹配 。
二分图
解法 \(1\) :网络流(通用)
二分图最大匹配可以转换成最大流(费用流)模型 。
如果使用 \(\operatorname{Dinic}\) 算法求该网络的最大流,复杂度\(O(\sqrt{n}m)\) 。
具体代码见博客文章网络流 。
解法 \(2\) :匈牙利算法(一般只适合求二分图最大匹配)
即不断寻找增广路,遍历二分图,最坏复杂度为 \(O(nm)\) 。
P3386 【模板】二分图最大匹配 :
核心代码:
bool dfs(int x) {for(int i=hea[x];i;i=nex[i]) if(!vis[ver[i]]){vis[ver[i]]=true;if(!match[ver[i]] || dfs(match[ver[i]])){match[ver[i]]=x; return true;}}return false; }for(int i=1;i<=n;i++) {memset(vis,false,sizeof(vis));if(dfs(i)) ans++; }CF1139E Maximize Mex
参考
性质:
二分图最大独立集
选最多的点,满足两两之间没有边相连。
二分图中,\(\text{最大独立集} = n - \text{最大匹配}\) 。
二分图最小点覆盖
选最少的点,满足每条边至少有一个端点被选,不难发现补集是独立集。
二分图中,\(\text{最小点覆盖} = n - \text{最大独立集}\) 。
一般图
咕咕咕~
创作挑战赛新人创作奖励来咯,坚持创作打卡瓜分现金大奖总结
- 上一篇: 腾讯公布“新基石研究员项目”第二批资助名
- 下一篇: 【做题记录】图论杂题