模板 最小費用最大流

2021-08-28 11:06:33 字數 2942 閱讀 5167

以後會更新。

另外,dij

kstr

adijkstra

dijkst

ra+勢的演算法,我的**要開o2o2

o2才能過,而且比不開o2o2

o2快了將近一倍(聽說只有手寫堆不會被卡)。

如能幫忙卡一下常數,萬分感激。

**(spf

aspfa

spfa

):

#include

using

namespace std;

#define ll long long

#define re register

#define gc getchar

#define pc putchar

#define cs const

inline

ll getint()

inline

void

outint

(ll a)

cs int n=

5002

,m=50002

;int n,m;

int last[n]

,nxt[m<<1]

,to[m<<1]

,ecnt=1;

ll cap[m<<1]

,cost[m<<1]

;inline

void

addedge

(int u,

int v,ll val,ll co)

int cur[n]

;ll dist[n]

;bitset vis;

queue<

int>q;

inline

bool

spfa

(int ss,

int tt)}}

return dist[tt]

<

0x3f3f3f3f;}

inline

ll dfs

(int u,cs ll &flow,cs int

&tt,ll &co)

vis[u]

=true

; ll ans=0;

for(

int&e=cur[u]

,v=to[e]

;e;v=to[e=nxt[e]])

}}return ans;

}inline

pair

maxflow

(int ss,

int tt)

intmain()

pairtmp=

maxflow

(s,t)

; cout<" "

}

**(dij

kstr

adijkstra

dijkst

ra+勢)(洛谷上會t乙個點):

#include

using

namespace std;

#define ll long long

#define re register

#define gc getchar

#define pc putchar

#define cs const

inline

ll getint()

inline

void

outint

(ll a)

cs int n=

5002

,m=50003

;int n,m;

int last[n]

,nxt[m<<1]

,to[m<<1]

,ecnt=1;

ll cap[m<<1]

,cost[m<<1]

;inline

void

addedge

(int u,

int v,ll val,ll co)

ll dist[n]

;int cur[n]

;bitset vis;

priority_queueint>

,vectorint>

>

, greaterint>

>

> q;

ll h;

inline

bool

dijkstra

(cs int

&ss,cs int

&tt)}}

if(dist[tt]

>=

0x3f3f3f3f

)return

false

;for

(int re u=

1;u<=n;

++u)

for(

int re e=last[u]

,v=to[e]

;e;v=to[e=nxt[e]])

cost[e]

-=dist[v]

-dist[u]

; h+

=dist[tt]

;return

true;}

inline

ll dfs

(cs int

&u,cs ll &flow,cs int

&tt)}}

return ans;

}inline

pair

maxflow

(cs int

&ss,cs int

&tt)

while

(true);

}return

make_pair

(ans,co);}

signed

main()

pairtmp;

tmp=

maxflow

(s,t)

; cout<" "

}

最小費用最大流模板

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