最大流最小費用(模板)

2021-07-31 08:36:27 字數 718 閱讀 2684

在最大流上加了乙個費用

用ek的方法先用spfa找最小費用的乙個可行流,在一次次修改,與最大流思想一樣,不過找最短路時需要建乙個負邊

#include

#include

#include

#include

using

namespace

std;

const

int m=199999;

int n,m,s,t;int dis[m];;

int nex[m],head[m],cos[m],to[m],tot,pre[m],cap[m],vis[m],flo[m],id[m];

int add(int x,int y,int z,int w)

int spfa(int s,int t)}}

}if(dis[t]>=inf)return

0; return

1; }

struct st;

st maxflow(int s,int t)

a.flow+=flo[t];

a.cost+=flo[t]*dis[t];

}return a;

}int main()

st d=maxflow(s,t);

printf("%d %d",d.flow,d.cost);

return

0;}

最小費用最大流模板

const int n 1010 點 const int m 2 10010 邊 const int inf 1000000000 struct nodee m int next1 m point n dis n q n pre n ne ne為已新增的邊數,next,point為鄰接表,dis為花...

最小費用最大流模板

一 最小費用最大流的模型 在保證流量最大的前提下,所需的費用最小,這就是最小費用最大流問題 帶有費用的網路流圖 g v,e,c,w v 頂點 e 弧 c 弧的容量 w 單位流量費用。任意的弧對應非負的容量c i,j 和單位流量費用w i,j 滿足 流量f是g的最大流。在f是g的最大流的前提下,流的費...

最小費用最大流 模板

因為含有負權邊,所以使用spfa進行增廣。指定流量的最小費用流可以初始化乙個f,然後每次一直迴圈到f 0為止。函式返回的是最大流,當然經過少量修改可以返回最小費用,利用最小流量乘以相應的費用即可。prevv記錄父節點,preve記錄當前節點對應父節點的第幾條邊。const int inf 0x3ff...