zhangtj

导航

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;
	}
}

多重匹配

  1. 拆点
  2. 网络流

最小点覆盖

求出一个最小的点集 \(S\),使得图中每一条边都有至少一个端点属于 \(S\)

\(最小点覆盖 = 最大匹配\)

最大独立集

选择最多的点,任意两点之间都没有一条边相连的点集称为二分图的最大独立集。

\(最大独立集 = n – 最大匹配数\)

最小不相交路径覆盖

在一个 DAG 中用最少的不相交的简单路径覆盖所有的点。

将 DAG 中每个点 \(x\) 拆成 \(x\)\(x+n\) 两个点,分别作为一张新二分图的左部和右部,进行匹配。

\(原图最小路径点覆盖 =原图点数 n – 二分图最大匹配数\)

最小可相交路径覆盖

传递闭包,然后若 \(i\) 可达 \(j\),二分图上将 \(i\)\(j+n\) 连边。

补充

若有环可以缩点,如 [ABC374G] Only One Product Name

网络流(大纲非 NOIP 级)

最大流

最小割

对偶图

对于平面图(没有交叉的边)上的网络流,\(最大流=最小割=对偶图最短路\)

例题:[ICPC-Beijing 2006] 狼抓兔子[CSP-S 2021] 交通规划

posted on 2024-11-13 16:12  zhangtj  阅读(8)  评论(0编辑  收藏  举报