最小费用最大流/费用流zkw算法模板(洛谷3381)
来源:互联网 发布:淘宝网千人千面 编辑:程序博客网 时间:2024/05/29 19:59
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#define rep(i,a,b) for(int i=a;i<=b;i++)#define dep(i,a,b) for(int i=a;i>=b;i--)#define ll long long#define inf 1000000000#define mem(x,num) memset(x,num,sizeof x)#define reg(x) for(int i=last[x];i;i=e[i].next)using namespace std;inline ll read(){ ll f=1,x=0;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}const int maxm=1e6+6;int S,T,ans,n,m,k,cnt=1,que[maxm],d[maxm],last[maxm];bool inq[maxm];struct edge{int to,next,v,c;}e[maxm<<2];void insert(int u,int v,int w,int c){ e[++cnt]=(edge){v,last[u],w,c};last[u]=cnt; e[++cnt]=(edge){u,last[v],0,-c};last[v]=cnt;}bool spfa(int S,int T){ mem(inq,0); int head=0,tail=1,now; rep(i,0,n)d[i]=inf; que[0]=T;d[T]=0;inq[T]=1; while(head<tail){ now=que[head++]; reg(now) if(e[i^1].v&&d[now]-e[i].c<d[e[i].to]){ d[e[i].to]=d[now]-e[i].c; if(!inq[e[i].to])inq[e[i].to]=1,que[tail++]=e[i].to; } inq[now]=0; } if(d[S]!=inf)return 1;else return 0;}int dfs(int x,int f){ if(x==T)return f; int used=0,w;inq[x]=1; reg(x) if(!inq[e[i].to]&&e[i].v&&d[x]-e[i].c==d[e[i].to]){ w=dfs(e[i].to,min(e[i].v,f-used)); if(w)ans+=w*e[i].c,e[i].v-=w,e[i^1].v+=w,used+=w; if(used==f)return f; } return used;}void zkw(){ int flow=0; while(spfa(S,T)){ inq[T]=1; while(inq[T]){mem(inq,0);flow+=dfs(S,inf);} } cout<<flow<<' '<<ans<<endl;}int main(){ n=read(),m=read(),S=read(),T=read(); rep(i,1,m){ int u=read(),v=read(),w=read(),c=read(); insert(u,v,w,c); } zkw(); return 0;}
阅读全文
0 0
- 最小费用最大流/费用流zkw算法模板(洛谷3381)
- 最小费用最大流 zkw算法
- 最小费用流---ZKW算法
- luogu3381【模板】最小费用最大流(zkw费用流板子)
- zkw最小费用流
- ZKW费用流 模板
- zkw费用流模板
- zkw费用流模板
- ZKW费用流 模板
- 【洛谷】3381 【模板】最小费用最大流
- (洛谷 最小费用最大流 模板)
- HDU 4744 Starloop System(ZKW最小费用最大流)
- 最小费用流的zkw算法
- 【费用流算法:ZKW】
- 模板[最小费用最大流]
- 最小费用最大流模板
- 最小费用最大流模板
- 最小费用最大流模板
- C#启动打印机打印文件
- Android Unity 交互
- 输入两个整数m和n,及另一个整数k,计算m/n,结果精确到小数点后k位。
- iOS 静态库的打包及使用(swift_oc)
- Android Studio Git实现回退至某一个版本
- 最小费用最大流/费用流zkw算法模板(洛谷3381)
- android ANR分析
- dedecms织梦自定义表单发送到邮箱-用QQ邮箱发送邮件
- 关于jsonp使用
- spyder增加模块代码提示功能
- maven怎么实现父pom的管理
- Java只用一套嵌套for循环输出菱形
- ThinkPHP开发指南-模型-高级模型之多数据库连接和切换
- Ubuntu下安装JDK