费用流处理负圈的方法

正常,我们的最小费用流的费用都应该是正数。
但是,有时,边权会出现负数,进而可能出现负圈。
这时,我们可以这样处理:
在每次增广时,先在整张图中找负圈,若能找到,则沿着负圈增广。
否则,再找增广路进行增广。
找负圈使用dfs的spfa会更好写,更快。
代码:

bool dfs(int u)
{
    bk[u]=true;
    for(int i=fr[u];i!=-1;i=ne[i])
    {
        if(w[i]>0&&jl[u]+fy[i]

你可能感兴趣的:(费用流处理负圈的方法)