-3.前言
两年以前,那时连基础算法都不甚熟悉,却因为看到 有人 会这么多高深和深奥的算法而嫉妒,下定了决心,要学一些“看起来很高深的算法”,可是呢,一方面自己实力不足,另一方面是自己的懒惰,最终呢,也就仅仅是复制了一篇题解,过了个模板而已,至于这个“网络流”究竟是什么,还是一问三不知。
现在,终于有机会重新面对这个算法了。
-2.一些约定
( u , v ) (u,v) (u,v) 表示一条从 u u u 到 v v v 的有向边。
s s s 表示源点, t t t 表示汇点。
如无特殊说明,我们所讲的图都是有向无环图,有且仅有一个源点和汇点。
除非有特殊强调,容量表示此条边剩余的容量(残量),原容量表示原始容量。
-1.一些定义
流网络指符合上述约定的一个有向无环图
f ( u , v ) f(u,v) f(u,v) 表示 ( u , v ) (u,v) (u,v) 的实际流量。
c ( u , v ) c(u,v) c(u,v) 表示 ( u , v ) (u,v) (u,v) 的原容量。
那么显然有 f ( u , v ) ≤ c ( u , v ) f(u,v) \le c(u,v) f(u,v)≤c(u,v)。
定义一个点 u u u 流入量指所有出边为 u u u 的边流量之和。流出量反之亦然。
定义残量 d ( u , v ) = c ( u , v ) − f ( u , v ) d(u,v)=c(u,v)-f(u,v) d(u,v)=c(u,v)−f(u,v)
定义路的意思为 s s s 到 t t t 的一条路径(参见图论定义)。
定义增广路是指一条路,这条路上的任意容量都为正数。
0.一些性质和常识
对于每一条边 ( u , v ) (u,v) (u,v) ,我们称其为可行流当且仅当:
- f ( u , v ) ≤ c ( u , v ) f(u,v) \le c(u,v) f(u,v)≤