对这段时间做的网络流问题做一个小结,希望有用,题目的话,可以去我的专题里面找
网络流算法的模版和详解
EK算法
ISAP
Dinic
MCMF
论文和知识点的讲解
胡伯涛:算法合集之《最小割模型在信息学竞赛中的应用》
模型和建模
1.多源多汇问题:源有多个,汇也有多个,流可以从任意一个源流出,最终可以流向任意一个汇,总流量等于所有源流出的总流量,也等于流进所有汇的总流量
建模方式:加一个超级源s’和超级汇t’,然后从s’向每个源引出一条有向弧,容量为无穷大,每个汇向t’引一条有向弧,容量为无穷大
题目:UVA-11045
2.结点容量:每个结点都有一个允许通过的最大流量,称为结点容量
建模方式:把每个原始结点u分裂成u1和u2两个结点,中间连一条有向弧,容量等于u的结点容量。原先到达u的弧改成到达u1,而原先从u出发的弧改成从u2出发
题目:UVA-10330
3.无源无汇的有上下界的流
模型分析:这个模型比较特别,没源又没汇,而且每条弧除了有容量c之外,还多了一个下界b。
那就分析一下该模型的特点,既然无源无汇,那么每个结点就都要满足”入流=出流”这个流量平衡条件
依此性质,就求出每个点的入流和出流,用d[]代表每个结点的入流-出流。接着设置一个超级源点S和一个超级汇点T,因为要满足所有结点的入流=出流,所以:
1.d[u] > 0的点,建立 (S->u)的边,容量为d[u]
2.d[u] < 0的点,建立(u->T)的边,容量为-d[u]
3.所给的边(u,v,c,b),建立(u->v)的边