以後會更新。
另外,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...