网络流进阶
上下界流
-
无源汇有上下界可行流
- 问题:无起点终点,每条边有流量上下界,需满足流量守恒和边流量约束。
- 解法:
- 计算边的残余容量(上界-下界),转为[0, 残余容量]范围。
- 统计顶点流量盈亏(流入下界和 - 流出下界和)。
- 建虚拟源点S'、汇点T',S'向盈余顶点补流, deficit顶点向T'流。
- 若S'到T'的最大流等于总盈余,则存在可行流(原边流量=下界+辅助网流量)。
-
有源汇有上下界最大流
- 问题:有源点s、汇点t,求满足上下界的最大流量。
- 解法:
- 先按无源汇方法判断可行流是否存在(可加t→s的无穷边转化)。
- 若可行,在残余网络上跑s到t的普通最大流,总流量=初始可行流+新增流量。
-
有源汇有上下界最小流
- 问题:有s、t,求满足上下界的最小流量。
- 解法:
- 先确认可行流存在。
- 在残余网络中反向求流,从t到s跑最大流,初始可行流减去该流量即为最小流。
题目,解法
CF1307G
- 问题:有向图+q次查询,每次可增加边权总和至多x,求最短路的最大可能值(n≤50,m≤n²,q≤1e5)。
- 思路:猜测与费用流相关,考虑限制每条边流量为1,在流量限制下找费用流,以确定前k短不交路径的长度总和来回答查询,存在对偶做法。
CF1288F
- 核心:处理两种点(红色、蓝色)及无色点的流量关系。
- 无费用、无色点边时:红色点需入流>0,蓝色点需出流>0;建边(红色→T、S→蓝色、T→S,容量均为(0,inf))跑无源汇可行流;无色点需同时加入红蓝相关边。
- 有染色费用时:将最大流改为费用流求解。
P2765
- 问题:划分成若干条链。
- 解法:利用“最小链覆盖=顶点数-最大匹配”结论(与此前内容呼应)。
P2763
- 问题:n个题分配给k类知识点,每类需x[i]题,每题仅放一个位置(n≤1000,k≤20)。
- 解法:可采用二分图带权匹配(KM算法)或最大流;因匈牙利算法常数小,O(nm)复杂度可通过。
CF491C
- 问题:涉及二分图最大权匹配(n≤2e6,k≤52)。
- 解法:可用最小费用流或KM算法。
POJ1966
- 问题:无向图中最少删除多少个点使图不连通(n≤50)。
- 解法:拆点技巧——将点x拆为in(x)和out(x),in→out连边,out(x)→in(y)连inf边(不可拆);枚举out(S)和in(T)求最小割。
混合图欧拉回路
- 问题:求含向边和无向边的欧拉回路(n,m≤200)。
- 思路:保证每个点出度等于总度数的一半,转化为边分配问题。
P2891 [USACO07OPEN] Dining G
- 问题:有N头奶牛、F种食物和D种饮料,每头奶牛只接受自己喜欢的食物和饮料,且每种食物或饮料只能分配给一头奶牛,求最多能同时获得符合偏好的食物和饮料的奶牛数量(N,F,D≤50)。
- 解法:属于双重约束下的匹配问题,需同时满足“奶牛-食物”和“奶牛-饮料”的偏好匹配,可通过构建网络流模型求解最大匹配数。
UVA11082
- 问题:还原矩阵,满足每行、每列和,元素在1-20之间(n,m≤20)。
- 解法:将[1,20]转为[0,19]避免上下界网络流,通过最大流处理行和列的限制。
CF1383F
- 问题:k条特殊边,q次查询其边权时s到t的最大流(n,m≤10000,q≤2e5,k≤10,w≤25)。
- 优化解法:
- 基础思路:枚举特殊边子集(删除与否),跑最大流,复杂度2^k×maxflow(n,m)。
- 优化:利用残余网络,加边后undo,复杂度降为max_flow(n,m) + 2^k×w×m。

浙公网安备 33010602011771号