二分图最小点覆盖
对于一般图显然有最小点覆盖大于等于最大匹配,这是因为每个匹配边都至少需要一个点来覆盖
而根据konig定理可以证明二分图最小点覆盖等于最大匹配
证明方式考虑从左部的每个非匹配点出发重新找一次增广路(一定会失败),把经过的点都进行标记,最终左部所有的未标记点和右部所有的标记点即构成最小点覆盖
实际求的过程中用最小割可以很方便的实现(分别枚举S和T所连的剩余容量为0的边对应的点即为最小点覆盖)
二分图最大独立集
容易发现最大独立集和最小点覆盖是一一对应的互补关系,两者互为补集,直接取最小点覆盖剩下的点就是最大独立集。
差分约束
[AGC056C]
带权并查集
似乎可以做csp2022t4?复杂度很优秀?
dfs树
CF118E
P4151
tarjan
CF160D
给定一张无向图,输出哪些边可以在最小生成树中,哪些边一定在最小生成树中,哪些边一定不在最小生成树中。
先求出一颗最小生成树,考虑每条边能否被替换?
圆方树
对于一个无向图,给他的每个点双(一条边也视为一个点双)都定义一个方点。其他点都是圆点
方点向它对应的点双中的每个圆点连边,形成一颗树,即为圆方树。
性质:圆点只和方点连边,方点只和圆点连边
构建:类似于求割点,每次要从栈中弹出一个点双时,建一个方点与这些点连边
说到简单路径,就必须提一个关于点双很好的性质:对于一个点双中的两点,它们之间简单路径的并集,恰好完全等于这个点双。
即同一个点双中的两不同点 u,v 之间一定存在一条简单路径经过给定的在同一个点双内的另一点 w。
最小路径点覆盖
Pro:给定一张DAG,要求用最少路径覆盖所有边
- 路径不可重边
\(\&\)