【BZOJ1834】 网络扩容
Time Limit: 1000 ms Memory Limit: 128 MB
Description
Input
Output
Sample Input
1 2 5 8
2 5 9 9
5 1 6 2
5 1 1 8
1 2 8 7
2 5 4 9
1 2 1 1
1 4 2 1
Sample Output
100%的数据中,N<=1000,M<=5000,K<=10
Solution
第一问直接上裸SPFA最大流,对于输入每条边$(u,v,f,c)$,流量设为输入的$f$,而费用设为0。(EK)
对于第二问,考虑第一问完成后的残余网络。对于残余网络上的每一条边,理应都可以0费用扩容;而残余网络上不存在的边,扩容就需要$w$(反向弧为$-w$)。
那么直接在第一问跑完后的残余网络上建图,对于输入的每一条边$(u,v,f,c)$,流量设为$+\infty$,费用设为$w$(反向弧$-w$)。
这样在两种边下跑费用流,会优先选择原来残余网络上费用为$0$的边来增广,那么0费用扩容的边刻画完成;其他的边需要付出费用的,也可以体现。
最后,由$n$连向一个超级汇点$T$,流量为$k$,费用为$0$,跑费用流即可。
#include <cstdio>
#include <queue>
using namespace std;
const int N=,M=,INF=;
int n,m,k,tot=,e[M][],h[N];
int S,T,dis[N],inq[N],pre[N],which[N];
struct Edge{int v,f,c,next;}g[M*];
queue<int> q;
inline void addEdge(int u,int v,int f,int c=){
g[++tot].v=v; g[tot].f=f; g[tot].c=c; g[tot].next=h[u]; h[u]=tot;
g[++tot].v=u; g[tot].f=; g[tot].c=-c; g[tot].next=h[v]; h[v]=tot;
}
bool spfa(){
while(!q.empty()) q.pop();
q.push(S);
for(int i=;i<=T;i++) dis[i]=INF,inq[i]=pre[i]=;
dis[S]=; inq[S]=;
while(!q.empty()){
int u=q.front(); q.pop();
for(int i=h[u],v;i;i=g[i].next)
if(g[i].f&&dis[u]+g[i].c<dis[v=g[i].v]){
dis[v]=dis[u]+g[i].c;
which[v]=i;
pre[v]=u;
if(!inq[v]){
inq[v]=;
q.push(v);
}
}
inq[u]=;
}
return dis[T]!=INF;
}
int solve(int type){
int mins,maxflow=,mincost=;
while(spfa()){
mins=INF;
for(int u=T;u!=S;u=pre[u])
if(g[which[u]].f<mins)
mins=g[which[u]].f;
maxflow+=mins; mincost+=mins*dis[T];
for(int u=T;u!=S;u=pre[u]){
g[which[u]].f-=mins;
g[which[u]^].f+=mins;
}
}
return !type?maxflow:mincost;
}
int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=m;i++){
scanf("%d%d%d%d",&e[i][],&e[i][],&e[i][],&e[i][]);
addEdge(e[i][],e[i][],e[i][]);
}
S=; T=n;
printf("%d ",solve());
T=n+;
addEdge(n,T,k,);
for(int i=;i<=m;i++)
addEdge(e[i][],e[i][],INF,e[i][]);
printf("%d\n",solve());
}
奇妙代码
【BZOJ1834】 网络扩容的更多相关文章
- BZOJ-1834 网络扩容 最小费用最大流+最大流+乱搞
1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 2269 Solved: 1136 [Submit ...
- [ZJOI2010][bzoj1834] 网络扩容 [费用流]
题面 传送门 思路 第一问:无脑网络流跑一波 第二问: 先考虑一个贪心的结论:扩容出来的扩容流量一定要跑满 证明显然 因此我们可以把扩容费用可以换个角度思考,变成增加一点流量,花费W的费用 这样,我们 ...
- bzoj1834 网络扩容 网络流
好久没写题解了啊··· 题目大意: 给你一幅n个点的网络,先求出其1到n的最大流,每条弧还会有个属性\(cost_i\),表示没扩容一个单位的费用,现在我们要求的就是扩容K个单位的最小费用 思路: 这 ...
- bzoj1834 网络扩容
Description 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用.求: 1. 在不扩容的情况下,1到N的最大流: 2. 将1到N的最大流增加K所需的 ...
- 【BZOJ1834】网络扩容(最大流,费用流)
[BZOJ1834]网络扩容(最大流,费用流) 题面 Description 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用.求: 1. 在不扩容的情况下 ...
- 【BZOJ1834】[ZJOI2010]network 网络扩容 最大流+最小费用流
[BZOJ1834][ZJOI2010]network 网络扩容 Description 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用.求: 1. 在不 ...
- bzoj1834: [ZJOI2010]network 网络扩容
努力看了很久样例一直过不了...然后各种输出中间过程啊巴拉巴拉弄了1h,没办法了...然后突然想到啊原来的边可以用啊为什么不用...于是A了...感人肺腑 #include<cstdio> ...
- BZOJ1834 [ZJOI2010]network 网络扩容 【最大流,费用流】
1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 3394 Solved: 1774 [Subm ...
- 【bzoj1834】[ZJOI2010]network 网络扩容
1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 2701 Solved: 1368[Submit ...
- [BZOJ1834][ZJOI2010]network 网络扩容 最大流+费用流
1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 3330 Solved: 1739 [Subm ...
随机推荐
- eclipse启动报错the catalog could not be loaded please ensure that you have network access and if needed have configured your network proxy
搜索关键词不对在网上查了一圈没找到合适的解决办法 去看报错的日志文件 然并卵.不过下面有个config.ini,想着以前能用现在不能用,肯定是配置问题,打开该文件 转载请注明出处http://www. ...
- POI--帮助文档
1.创建工作簿 (WORKBOOK) HSSFWorkbook wb = new HSSFWorkbook(); FileOutputStream fileOut = new FileOutputSt ...
- grails项目中(DB的相关操作)
grails项目中(DB的相关操作) save:保存Domain对象的数据到对应的库表中(可能是insert也可能是update) findBy: 动态方法,查找并返回第一条记录,方法名可以变化 eg ...
- jumpserver v0.4.0 基于 CenOS7 的安装详解
标签(linux): jumpserver 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 笔者已经弃用Jumpserver,并自已开发了shell跳板机. sh ...
- 理解DNS
理解DNS 写在前面: 目前,我们大部分的网络通信都是基于TCP/IP协议的,而TCP/IP又基于IP地址作为唯一标识进行通信,随着需要记忆的IP地址数量的增多,肯定会超出我们的记忆能力范围,但如果使 ...
- mongodb监控常用方法
列举mongodb监控的常用命令 1.监控统计 mongostat 可用于查看当前QPS/内存使用/连接数,以及多个shard的压力分布 命令参考 ./mongostat --port 27071 - ...
- ABP官方文档翻译 5.4 SwaggerUI集成
SwaggerUI集成 介绍 ASP.NET Core 安装Nuget包 配置 测试 ASP.NET 5.x 安装Nuget包 配置 测试 介绍 在它的网站上:“...使用Swagger可用的API, ...
- elasticsearch的percolator操作
es的普通查询是通过某些条件来查询满足的文档,percolator则不同,先是注册一些条件,然后查询一条文档是否满足其中的某些条件. es的percolator特性在数据分类.数据路由.事件监控和预警 ...
- Spring整合JMS(一)-基础篇
1.基础知识 图1 同步通信和异步通信通信过程示意图 RMI使用的是同步通信,JMS使用的是异步通信.从图1可以看出异步通信的好处就是减少了不必要的等待,提高了效率. JMS中有两个主要的概念:消 ...
- CTP期货期权交易开发
CTP交易部分接口说明 综合交易平台(Comprehensive Transaction Platform,CTP)是专门为期货公司开发的一套期货经纪业务管理系统,由交易.风险控制和结算三大系统组成. ...