最小费用最大流
最近工作中用到mcmf分配流量,在此记录下。
相较于最大流算法,mcmf改为每次都增广费用最少的一条路径。
实现上是,使用SPFA替换Edmond-Karp算法的BFS。
SPFA参考:http://keyblog.cn/article-21.html
EK:
int edmondkarp() { int maxflow = 0; while (bfs()) { maxflow += flow[t]; for (int i = t; i != s; i = edges[last[i] ^ 1].to) { edges[last[i]].w -= flow[t]; edges[last[i] ^ 1].w += flow[t]; } } return maxflow; }
建图模型: