知道了最大流之後這個沒什麼難度
但是好像全世界都是用的ek演算法(spfa),要麼就來個dijkstra
好像是說可以證明dinic跑費用流並沒有優化,而且ek演算法在費用流裡更容易碼也更容易理解......
於是乎luogu模板最小費用最大流
換了一種存反邊的方式......
話不多說
#include#include#include#include#include#include#include#include#include#include#include#define rg register
#define il inline
#define lst long long
#define ldb long double
#define n 5050
#define m 50050
using namespace std;
const int inf=1e9;
il int read()
while(ch>='0'&&ch<='9')s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
return m?-s:s;
}int n,m,s,t;
lst ans,tot;
int hd[n],cnt=1;
int pre[n],vis[n];
int dis[n];
queueq;
struct edgeljl[m<<1];
il void add(rg int p,rg int q,rg int o,rg int w)
,hd[p]=cnt;
ljl[++cnt]=(edge),hd[q]=cnt;
}il int spfa()}}
if(dis[t]==dis[0])return 0;
rg int flow=inf;
for(rg int i=t;i!=s;i=ljl[pre[i]^1].to)
flow=min(flow,ljl[pre[i]].c);
tot+=flow,ans+=flow*dis[t];
for(rg int i=t;i!=s;i=ljl[pre[i]^1].to)
ljl[pre[i]].c-=flow,ljl[pre[i]^1].c+=flow;
return 1;
}int main()
while(spfa());
printf("%lld %lld\n",tot,ans);
return 0;
}
網路流 最小費用最大流
q 為什麼突然想搞網路流?a 迫於tham 蛤mu的淫威 用最短路演算法求出s t的路徑 把路徑要摳出來,而且每條邊要有容量 算一下路徑裡面的可以流過的最大的流量 發現此時的花費就是 dis t flow 累加即可.重複1 3直到不能夠到達t.include include include incl...
網路流 最大流 最小割 最小費用流
sap gap 鄰接表 sap gap 鄰接矩陣 dinic 鄰接矩陣 dinic 鄰接表 介個人寫的敲詳細 include include include include include using namespace std const int maxn 5010 const int maxn ...
網路最大流和最小費用流
from 網路最大流和最小費用流.html 網路流isap演算法的簡單介紹 from 這幾天由於種種原因經常接觸到網路流的題目,這一型別的題給人的感覺,就是要非常使勁的yy才能出來點比較正常的模型。尤其是看了amber最小割應用的文章,裡面的題目思路真是充滿了綿綿不絕的yd思想。然而比賽中,當你yd...