模板 最小費用最大流(動態開節點(待解決))

2022-05-16 00:48:16 字數 1220 閱讀 2124

修車車嘍~

注意建圖的時候不僅要關注第$i$輛車給第$j$個人修,還要排是第幾個修,所以乾脆直接拆成$n*m$個點代表$i,j$,連向$k$次序點。邊費用應該是後面$(n-k)輛的等待時間+這輛修的時間=(n-k+1)*a(當前這輛所需時間)$

又背了乙個板子叻!打卡完成今日任務!

貼上以前的醜醜**,略微修改。

#include#include

#include

#include

#define oo 2147483647

using

namespace

std;

#define ll long long

intm, n;

const

int n = 100005

;const

int m = 2000005

;int

s, t;

ll stot = 1

, tov[m], f[m], nex[m], h[n], w[m];

void add ( int u, int v, int ff, int

ww )

ll mincost;

double

maxflow;

ll vis[n], dis[n], preu[n], prei[n];

queue

< int >q;

bool

spfa ( ) }}

} return dis[t] }void

doge ( )

u =t;

while ( u !=s )

mincost += delta *dis[t];

maxflow +=delta;

}int

main ( )

}for ( int i = 1; i <= m*n; i ++)

add ( s, i,

1, 0

);

for ( int i = n*m+1; i <= n*m+n; i ++)

add ( i, t,

1, 0

);

while

( spfa ( ) )

doge ( );

printf (

"%.2lf

", 1.0*mincost/n );

return0;

}

最小費用最大流模板

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...