1。最大流问题
即给定源点s和汇点t, 求s到t的最大流.
几个名词:
(1).容量(capacity): 对于一条边(u,v),它的物品上线称为容量,记作C(u,v),对于不存在的边C(u,v)=0
(2).流量(flow): 实际运送的物品称为流量,记作F(u,v),且F(u,v) = -F(v,u),所有F(u,v)最多只有一个为整数(可以都是0)
(3).残流量: 容量与流量之差称为残流量(简称残量)
在最大流问题中, 容量C和流量F满足3个性质:
(1).容量限制: F(u,v) <= C(u,v)
(2).斜对称性: F(u,v) = -F(v,u)
(3).流量平衡: 即从s点流出的净流量 == 流入t的净流量
求最大流问题的经典算法——增广路算法(EK算法)
注:这里我用自己的想法描述,以书本为准!!
每次找出从s到t的一条道路的最小残量d, 把对应边的流量减去d,所求的最大流max+=d;
直到整个网络中存在的道路其最小残量值都为0, 则表示已经是最大流了.
练习:
poj 1459 Power Network
http://162.105.81.212/JudgeOnline/problem?id=1459
poj 1273 Drainage Ditches
http://162.105.81.212/JudgeOnline/problem?id=1273
题目要看清楚...cap[A][B] += C;
最好用bfs, dfs很容易被搞死.
poj 1149 PIGS
http://162.105.81.212/JudgeOnline/problem?id=1149
注意建图