博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 6118 度度熊的交易计划(费用流)
阅读量:4486 次
发布时间:2019-06-08

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

 

【题目链接】 

 

【题目大意】

  给出一张无向边权图,每个点最多可以生产b[i]商品,每件代价为a[i],

  每个点最多可以卖出d[i]商品,收益为c[i],
  每个商品在每条边上的运输价值为数量乘长度,求最大纯收益

 

【题解】

  我们从源点向每个点连价值为-c,流量为d的边

  由每个点连价值为a,流量为b的边,计算最小费用可行流就是答案。

 

【代码】

#include 
#include
#include
#include
using namespace std;const int N=2000,M=10000;namespace Min_Cost_Max_Flow{ const int INF=0x3f3f3f3f; int S,T,cnt,ans,d[N],from[N],g[N],flow; struct edge{int from,to,nxt,c,v;}e[M]; void add(int u,int v,int w,int c){ e[++cnt].from=u;e[cnt].to=v; e[cnt].nxt=g[u];g[u]=cnt; e[cnt].c=c;e[cnt].v=w; }void add_edge(int u,int v,int w,int c){add(u,v,w,c);add(v,u,0,-c);} bool spfa(){ memset(d,INF,sizeof(d)); d[S]=0; memset(from,0,sizeof(from)); queue
q; q.push(S); while(!q.empty()){ int now=q.front(); q.pop(); for(int i=g[now];i;i=e[i].nxt){ if(e[i].v&&d[e[i].to]>d[now]+e[i].c){ d[e[i].to]=d[now]+e[i].c; from[e[i].to]=i; q.push(e[i].to); } } }return(d[T]<=0); // 求可行流最小费用,因此当费用增量大于0时不继续增加流量 } void mcf(){ int x=INF; for(int i=from[T];i;i=from[e[i].from])x=min(x,e[i].v);flow+=x; for(int i=from[T];i;i=from[e[i].from]){e[i].v-=x;e[i^1].v+=x;ans+=e[i].c*x;} } void Initialize(int n){ memset(g,0,sizeof(g)); memset(e,0,sizeof(e)); ans=flow=0; cnt=1; S=0,T=n+1; } void doit(){while(spfa())mcf();}}int n,m,G[N][N];using namespace Min_Cost_Max_Flow;int main(){ while(~scanf("%d%d",&n,&m)){ Initialize(n); for(int i=1;i<=n;i++){ int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); add_edge(S,i,d,-c); add_edge(i,T,b,a); }memset(G,INF,sizeof(G)); for(int i=1;i<=m;i++){ int x,y,z; scanf("%d%d%d",&x,&y,&z); if(z

转载于:https://www.cnblogs.com/forever97/p/hdu6118.html

你可能感兴趣的文章
设置RDLC中table控件的表头在每页显示
查看>>
linux中tomcat内存溢出解决办法 分类: 测试 ...
查看>>
jQuery $.each用法
查看>>
[Luogu 3902]Increasing
查看>>
clear语句处理不同类型的数据结果
查看>>
HDU 6118 度度熊的交易计划(费用流)
查看>>
UrlEncode编码/UrlDecode解码使用方法
查看>>
使用ubuntu作为web开发环境的一些感受
查看>>
easyui-datagrid 自适应列宽问题
查看>>
OO第一次总结
查看>>
VS2012发布网站详细步骤
查看>>
文件下载隐匿执行
查看>>
【导图控】各软件开发版本详解
查看>>
HDU 1533 Going home
查看>>
Extjs面板和布局初探
查看>>
箭头函数
查看>>
SharePoint【ECMAScript对象模型系列】-- 11. Enable/Disable Ribbon上的Button
查看>>
C#委托-怎样理解C#中“委托”的含义和用途
查看>>
Spring数据访问1 - 数据源配置及数据库连接池的概念
查看>>
setting.xml配置详解
查看>>