题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6118

题意:中文题

分析:

最小费用最大流,首先建立源点 s ,与超级汇点 t 。因为生产一个商品需要花费 a[i] 元,且上限为 b[i] ,所以我们从 s 向这些点之间连一条容量为 b[i] ,费用为 a[i] 的边。同样的道理,出售一个商品可以赚到 c[i] 元,最多出售 d[i] 个,于是我们从这些点向 t 连一条容量为 d[i] ,费用为 -c[i] 的边。最后所有的公路也是花费,从 uv 连接一条双向边,容量为 INF ,费用为 k,然而要注意这道题并不是要求最大流,这道题要求的是可行流,这个只需要修改一下求增广的过程就可以了,最后答案就是费用流的相反数。

#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3FFFFFFF;
const int maxn = 2222;
struct node{
int st, en, flow, cost, next;
node(){}
node(int st, int en, int flow, int cost, int next):st(st),en(en),flow(flow),cost(cost),next(next){}
}E[101000]; int num, p[maxn];
void init(){
memset(p, -1, sizeof(p));
num = 0;
}
void add(int st, int en, int flow, int cost){
E[num] = node(st, en, flow, cost, p[st]);
p[st] = num++;
E[num] = node(en, st, 0, -cost, p[en]);
p[en] = num++;
}
int pre[maxn];
int dis[maxn];
bool fg[maxn];
bool spfa(int st, int en)
{
for(int i=0;i<=en;i++){
fg[i] = 0, dis[i] = inf, pre[i]=-1;
}
queue<int>q;
q.push(st);
fg[st]=1;
dis[st]=0;
while(!q.empty()){
int u = q.front(); q.pop();
fg[u]=0;
for(int i=p[u];~i;i=E[i].next){
int v = E[i].en;
if(E[i].flow&&dis[v]>dis[u]+E[i].cost){
dis[v] = dis[u]+E[i].cost;
pre[v]=i;
if(!fg[v]){
fg[v]=1;
q.push(v);
}
}
}
}
// if(dis[en] < inf) return 1;
// return 0;
return dis[en]<=0;
} int solve(int st, int en){
int ans=0;
while(spfa(st,en)){
int d = inf;
for(int i=pre[en];i+1;i=pre[E[i].st]) d = min(d, E[i].flow);
for(int i=pre[en];i+1;i=pre[E[i].st]){
E[i].flow -= d;
E[i^1].flow += d;
ans += d*E[i].cost;
}
}
return ans;
}
int main()
{
int n,m;
while (cin>>n>>m)
{
init();
int s=0,t=n+1,cost;
for (int i=1; i<=n; i++)
{
int a,b,c,d;
cin>>a>>b>>c>>d;
add(s,i,b,a);
add(i,t,d,-c);
}
while (m--)
{
int u,v,k;
cin>>u>>v>>k;
add(u,v,inf,k);
add(v,u,inf,k);
}
int ans = -solve(s,t);
printf("%d\n", ans);
}
return 0;
}

HDU 6118 度度熊的交易计划 最大费用可行流的更多相关文章

  1. HDU 6118 度度熊的交易计划(最小费用最大流)

    Problem Description度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题: 喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区. 由于生产能力的区别,第i个 ...

  2. HDU 6118 度度熊的交易计划(费用流)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6118 [题目大意] 给出一张无向边权图,每个点最多可以生产b[i]商品,每件代价为a[i], 每个 ...

  3. HDU 6118 度度熊的交易计划 【最小费用最大流】 (2017"百度之星"程序设计大赛 - 初赛(B))

    度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  4. hdu 6118度度熊的交易计划(费用流)

    度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  5. HDU 6118 度度熊的交易计划 (最小费用流)

    度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  6. hdu 6118 度度熊的交易计划

    度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  7. 2017"百度之星"程序设计大赛 - 初赛(B) 度度熊的交易计划 最小费用最大流求最大费用

    /** 题目:度度熊的交易计划 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6118 题意:度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题 ...

  8. HDU 6118 度度熊的交易计划(网络流-最小费用最大流)

    度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题: 喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区. 由于生产能力的区别,第i个片区能够花费a[i]元生产1个商品,但 ...

  9. HDU 6118 2017百度之星初赛B 度度熊的交易计划(费用流)

    度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

随机推荐

  1. Andorid API Package ---> android.app

    包名: android.app                                     Added in API level 1       URL:http://developer. ...

  2. [洛谷P5205]【模板】多项式开根

    题目大意:给你$n$项多项式$A(x)$,求出$B(x)$满足$B^2(x)\equiv A(x)\pmod{x^n}$ 题解:考虑已经求出$B_0(x)$满足$B_0^2(x)\equiv A(x) ...

  3. mybatis中parameterType可以写的别名

    mybatis中parameterType可以写的别名 https://blog.csdn.net/sdzhangshulong/article/details/51749807 _byte byte ...

  4. caffe环境的搭建(Ubuntu14.04 64bit,无CUDA,caffe在CPU下运行)

    1. 安装BLAS : $ sudo apt-get install libatlas-base-dev 2. 安装依赖项: $ sudo apt-get install libprotobuf-de ...

  5. POJ 2226 Muddy Fields(二分匹配 巧妙的建图)

    Description Rain has pummeled the cows' field, a rectangular grid of R rows and C columns (1 <= R ...

  6. c#知识梳理

    转:http://www.cnblogs.com/zhouzhou-aspnet/articles/2591596.html 本文是一个菜鸟所写,本文面向的人群就是像我这样的小菜鸟,工作一年也辛辛苦苦 ...

  7. 三大linux系统对比

    概述: centos作为服务器部署是第一选择.CentOS去除很多与服务器功能无关的应用,系统简单但非常稳定,命令行操作可以方便管理系统和应用,丰富的帮助文档和社区的支持. ubuntu最佳的应用领域 ...

  8. SSH客户端,FinalShell服务器管理,远程桌面加速软件,支持Windows,Mac OS X,Linux,版本2.6.3.1

    FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求. 用户QQ群 342045988 Windows版下载地址:http:/ ...

  9. mysql 在查询结果中进行二次查询

    第一次查询:查询身份证编号和出现次数 select cardid,count(cardid) as total from p_person_info group by cardid 在第一次查询结果进 ...

  10. Xamarin入门浅析

    1. 安装 1) 使用标准安装流程(JDK1.6 -> Android SDK -> NDK -> Xamarin Studio -> Xamarin Visual Studi ...