NOIP复习计划——图论
最小生成树
最短路
Floyd
传递闭包
单源最短路
连通性问题
有向图强连通分量
tarjan 算法
无向图点/边双连通分量
割点/割边(桥)
二分图(大纲非 NOIP 级)
二分图染色
最大匹配——匈牙利算法
bool dfs(int x){
for(int i=fir[x];i;i=nex[i]){
int v=to[i];
if(!vis[v]){
vis[v]=1;
if(!match[v]||dfs(match[v])){
match[v]=x;
match[x]=v;
return 1;
}
}
}
return 0;
}
int main() {
//对于每个二分图左部的点进行匹配
for(int i=1;i<=n;i++) {
memset(vis,0,sizeof vis);
if(dfs(i)) ++ans;
}
}
多重匹配
- 拆点
- 网络流
最小点覆盖
求出一个最小的点集 \(S\),使得图中每一条边都有至少一个端点属于 \(S\)。
\(最小点覆盖 = 最大匹配\)
最大独立集
选择最多的点,任意两点之间都没有一条边相连的点集称为二分图的最大独立集。
\(最大独立集 = n – 最大匹配数\)
最小不相交路径覆盖
在一个 DAG 中用最少的不相交的简单路径覆盖所有的点。
将 DAG 中每个点 \(x\) 拆成 \(x\) 和 \(x+n\) 两个点,分别作为一张新二分图的左部和右部,进行匹配。
\(原图最小路径点覆盖 =原图点数 n – 二分图最大匹配数\)
最小可相交路径覆盖
传递闭包,然后若 \(i\) 可达 \(j\),二分图上将 \(i\) 向 \(j+n\) 连边。
补充
若有环可以缩点,如 [ABC374G] Only One Product Name。
网络流(大纲非 NOIP 级)
最大流
最小割
对偶图
对于平面图(没有交叉的边)上的网络流,\(最大流=最小割=对偶图最短路\)。
本文来自博客园,作者:zhangtj,转载请注明原文链接:https://www.cnblogs.com/zhangtj/p/18544164,不然会AFO