最小费用最大流

最近工作中用到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;
}
View Code

建图模型:

 

原文地址:https://www.cnblogs.com/wocgcow/p/13910498.html