博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图论--最小费用最大流(MCMF)
阅读量:6173 次
发布时间:2019-06-21

本文共 2305 字,大约阅读时间需要 7 分钟。

以下为提高+难度。

关于这个算法我不多做阐述,因为我说的肯定没有lrj大神说得好,大家可以看他的书–《算法竞赛入门经典》,那里有详细描述。

到了这种难度,极其建议大家去抄抄代码,过一遍手,比什么都强。
我也是这一遍抄完了,才感觉这两天的网络流明白了。

下来就是代码。

code:

//洛谷 P3381 【模板】最小费用最大流#include
#define ll long longusing namespace std;const int maxn=10001,inf=0x3f3f3f3f;struct edge{ int from,to,cap,flow,cost; edge(int u,int v,int c,int f,int d):from(u),to(v),cap(c),flow(f),cost(d){}};struct MCMF{ int n,s,t; ll cost,flow; vector
edges; vector
G[maxn]; int a[maxn],p[maxn],d[maxn],in[maxn]; void init(int n,int s,int t){ this->n=n; this->s=s; this->t=t; flow=0; cost=0; edges.clear(); for(int i=1;i<=n;i++){ G[i].clear(); } } void addedge(int x,int y,int l,int w){ edges.push_back(edge(x,y,l,0,w)); edges.push_back(edge(y,x,0,0,-w)); int m=edges.size(); G[x].push_back(m-2); G[y].push_back(m-1); } bool spfa(){ memset(in,0,sizeof(in)); memset(d,0x3f,sizeof(d)); queue
q; in[s]=1; q.push(s); d[s]=0; a[s]=inf; p[s]=0; while(!q.empty()){ int u=q.front(); q.pop(); in[u]=0; for(int i=0;i
e.flow&&d[e.to]>d[u]+e.cost){ d[e.to]=d[u]+e.cost; a[e.to]=min(a[u],e.cap-e.flow); p[e.to]=G[u][i]; if(!in[e.to]){ q.push(e.to); in[e.to]=1; } } } } if(d[t]==inf){ return false; } flow+=a[t]; cost+=a[t]*d[t]; int x=t; while(x!=s){ edges[p[x]].flow+=a[t]; edges[p[x]^1].flow-=a[t]; x=edges[p[x]].from; } return true; } void maxflow(){ while(spfa()); }}mcmf;int main(){ int n,m,s,t; scanf("%d %d %d %d",&n,&m,&s,&t); mcmf.init(n,s,t); for(int i=1;i<=m;i++){ int x,y,l,w; scanf("%d %d %d %d",&x,&y,&l,&w); mcmf.addedge(x,y,l,w); } mcmf.maxflow(); printf("%lld %lld",mcmf.flow,mcmf.cost); return 0;}

转载于:https://www.cnblogs.com/stone41123/p/7581284.html

你可能感兴趣的文章
C#设计模式之装饰者
查看>>
[noip模拟20170921]模版题
查看>>
获取ip
查看>>
Spring Shell简单应用
查看>>
移动app可开发的意见于分析
查看>>
周总结7
查看>>
类似OutLook布局的开源控件XPanderControls
查看>>
Web前端工程师成长之路——知识汇总
查看>>
[2018-9-4T2]探索黑暗dark
查看>>
【学术信息】中科院2019年学术期刊分区-综合性期刊
查看>>
ShareObject离线存储相关
查看>>
C++ XML
查看>>
windows批处理 打开exe后关闭cmd
查看>>
Flask开发系列之快速入门
查看>>
关于SaveChanges
查看>>
php7扩展开发 一 获取参数
查看>>
处女座与复读机
查看>>
Laravel 5.2数据库--迁移migration
查看>>
ExtJs Extender controls 不错的例子
查看>>
html的基础知识
查看>>