思路

简单的费用流问题,跑出第一问后在残量网络上加边求最小费用即可

代码

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;
const int MAXN = 4000;
const int MAXM = 10000;
const int INF = 0x3f3f3f3f;
struct Edge{int u,v,cap,cost,flow;
};
struct data{int u,v,c,w;
}E[MAXM];
int s,t,n,m,k;
vector<Edge> edges;
vector<int> G[MAXN];
void addedge(int u,int v,int cap,int cost){edges.push_back((Edge){u,v,cap,cost,0});edges.push_back((Edge){v,u,0,-cost,0});int cnt=edges.size();G[u].push_back(cnt-2);G[v].push_back(cnt-1);
}
int a[MAXN],d[MAXN],p[MAXN],vis[MAXN];
queue<int> q;
bool SPFA(int &flow,int &cost){memset(d,0x3f,sizeof(d));memset(p,0,sizeof(p));q.push(s);vis[s]=true;a[s]=INF;d[s]=0;while(!q.empty()){int x=q.front();q.pop();vis[x]=false;for(int i=0;i<G[x].size();i++){Edge &e = edges[G[x][i]];if(e.cap>e.flow&&d[x]+e.cost<d[e.v]){d[e.v]=d[x]+e.cost;a[e.v]=min(a[x],e.cap-e.flow);p[e.v]=G[x][i];if(!vis[e.v]){vis[e.v]=true;q.push(e.v);}}}}if(d[t]==INF)return false;cost+=d[t]*a[t];flow+=a[t];for(int i=t;i!=s;i=edges[p[i]].u){edges[p[i]].flow+=a[t];edges[p[i]^1].flow-=a[t];}return true;
}
void MCMF(int &flow,int &cost){flow=0,cost=0;while(SPFA(flow,cost));
}
int main(){scanf("%d %d %d",&n,&m,&k);s=1,t=n;for(int i=1;i<=m;i++){scanf("%d %d %d %d",&E[i].u,&E[i].v,&E[i].c,&E[i].w);addedge(E[i].u,E[i].v,E[i].c,0);}int flow=0,cost=0;MCMF(flow,cost);printf("%d ",flow);s=MAXN-2;addedge(s,1,k,0);for(int i=1;i<=m;i++){addedge(E[i].u,E[i].v,INF,E[i].w);}MCMF(flow,cost);printf("%d\n",cost);return 0;
}

转载于:https://www.cnblogs.com/dreagonm/p/10493290.html

P2604 [ZJOI2010]网络扩容相关推荐

  1. P2604 ZJOI2010 网络扩容,费用流裸题

    网络扩容 题目链接 https://www.luogu.org/problemnew/show/P2604 题解 对于每条边u→vu \rightarrow vu→v,我们将按照容量=C=C=C,费用 ...

  2. BZOJ 1834 Luogu P2604 [ZJOI2010]网络扩容 (最小费用最大流)

    题目连接: (luogu) https://www.luogu.org/problemnew/show/P2604 (bzoj) https://www.lydsy.com/JudgeOnline/p ...

  3. [ZJOI2010]网络扩容[网络流24题]

    [ZJOI2010]网络扩容[网络流24题] 题意: 给定一张有向图,每条边都有一个容量 c 和一个扩容费用 w.这里扩容费用是指将容量扩大 1 所需的费用.求: 在不扩容的情况下,1 到 n 的最大 ...

  4. [ZJOI2010]网络扩容

    Description 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用. 求: 1.在不扩容的情况下,1到N的最大流: 2.将1到N的最大流增加K所需的最 ...

  5. bzoj1834: [ZJOI2010]network 网络扩容

    努力看了很久样例一直过不了...然后各种输出中间过程啊巴拉巴拉弄了1h,没办法了...然后突然想到啊原来的边可以用啊为什么不用...于是A了...感人肺腑 #include<cstdio> ...

  6. [BZOJ 1834] [ZJOI2010]network 网络扩容

    1834: [ZJOI2010]network 网络扩容 Time Limit: 3 SecMemory Limit: 64 MB Description 给定一张有向图,每条边都有一个容量C和一个扩 ...

  7. [BZOJ1834][ZJOI2010]network 网络扩容 最大流+费用流

    1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 3330  Solved: 1739 [Subm ...

  8. 网络工程师成长日记383-某银行某市中心支行市县网络扩容项目工程感想

    网络工程师成长日记383-某银行某市中心支行市县网络扩容项目工程感想 这是我的第383篇原创文章,记录网络工程师行业的点点滴滴,结交IT行业有缘之人 某银行某市中心支行市县网络扩容项目工程感想 接到老 ...

  9. 【BZOJ】1834: [ZJOI2010]network 网络扩容(最大流+费用流)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1834 我又思考人生了T_T,nd的数组开小了,一直wa,调了一个小时才发现啊!!!!!我一直以为我的 ...

最新文章

  1. C++:多线程中的小白(1)基础概念
  2. 【组队学习】【35期】SQL编程语言
  3. 理论经典:TCP协议的3次握手与4次挥手过程详解
  4. 网络营销外包——网络营销外包专员如何帮助企业挑选网站建设类型
  5. android官方架构room,Android 官方架构组件介绍之 Room(翻译)
  6. OpenCV基本的SIMD的实例(附完整代码)
  7. http 长连接 短连接
  8. 【转】代码里的命名规则:错误的和正确的对比
  9. 计算机中Git配置环境变量 - 教程篇
  10. [LINUX] 误删了/lib 怎么办?
  11. 广东省计算机应用专业综合理论知识,(计算机应用技术专业综合理论考试说明.doc...
  12. 检查库文件的rpath命令
  13. oracle是什么数据库管理系统,数据库管理系统
  14. Java实现 LeetCode 383 赎金信
  15. Arthas线上代码诊断神器-定位问题
  16. 一文看懂国内人工智能行业产业链全景(必收藏)
  17. 【积水成渊-逐步定制自己的Emacs神器】1:Emacs入门
  18. networkx笔记
  19. android实现简单弹幕
  20. 路径跟踪算法之PID路径跟踪与PP跟踪

热门文章

  1. 关于树的前序遍历,中序遍历,后序遍历的相互转化(含代码实现)
  2. 求出数组中超过一半的数
  3. STM32 IO口双向问题
  4. 1环境-企业级 Hyper-v 群集部署实验方案
  5. 微软11月补丁星期二值得关注的6个0day及其它
  6. Adobe 修复严重的 Photoshop 缺陷
  7. NAME:WRECK 漏洞影响近亿台物联网设备
  8. SoftPAC 虚拟控制器漏洞使 OT 网络易受攻击
  9. 纠正存储 dict 的元素前是计算 key 的 hash 值?
  10. 坚守本心,你公司的OA解决了以下问题吗?