BZOJ 1834 【ZJOI2010】 network 网络扩容
Description
Input
Output
HINT
30%的数据中,N<=100
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define File(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
#define maxn 1010
#define maxm 20010
#define INF (1<<25) using namespace std;
typedef long long llg; struct data{
int u,v,c,w;
}s[maxm];
int n,m,K,d[maxn],dep[maxn],ans,S,fa[maxn];
int head[maxn],next[maxm],to[maxm],c[maxm],f[maxm],tt=1;
bool w[maxn]; int getint(){
int w=0;bool q=0;
char c=getchar();
while((c>'9'||c<'0')&&c!='-') c=getchar();
if(c=='-') c=getchar(),q=1;
while(c>='0'&&c<='9') w=w*10+c-'0',c=getchar();
return q?-w:w;
} bool bfs(){
int l=0,r=0;
for(int i=1;i<=n;i++) dep[i]=-1;
dep[1]=1; d[r++]=1;
while(l!=r){
int u=d[l++];
for(int i=head[u],v;v=to[i],i;i=next[i])
if(c[i] && dep[v]==-1) dep[v]=dep[u]+1,d[r++]=v;
}
return dep[n]!=-1;
} int dfs(int u,int now){
if(u==n) return now;
if(!now) return 0;
int low=0;
for(int i=head[u],v,res;v=to[i],i;i=next[i])
if(c[i] && dep[v]==dep[u]+1){
res=dfs(v,min(now,c[i])); low+=res;
c[i]-=res; c[i^1]+=res; now-=res;
}
if(!low) dep[u]=-1;
return low;
} bool spfa(){
int l=0,r=0;
for(int i=1;i<=n;i++) dep[i]=-1,w[i]=0;
dep[S]=0; d[r++]=S; w[S]=1;
while(l!=r){
int u=d[l++]; w[u]=0; if(l==maxn) l=0;
for(int i=head[u],v;v=to[i],i;i=next[i])
if(c[i] && (dep[v]==-1 || dep[v]>dep[u]+f[i])){
dep[v]=dep[u]+f[i]; fa[v]=i;
if(!w[v]){
d[r++]=v; w[v]=1;
if(r==maxn) r=0;
}
}
}
return dep[n]!=-1;
} int get(){
int now=INF,ans=0;
for(int u=n;u!=S;u=to[fa[u]^1]) now=min(now,c[fa[u]]),ans+=f[fa[u]];
for(int u=n;u!=S;u=to[fa[u]^1]) c[fa[u]]-=now,c[fa[u]^1]+=now;
return now*ans;
} int main(){
File("a");
n=getint(); m=getint(); K=getint();
for(int i=1,u,v;i<=m;i++){
s[i].u=getint(),s[i].v=getint();
s[i].c=getint(),s[i].w=getint();
u=s[i].u; v=s[i].v;
to[++tt]=v;next[tt]=head[u];head[u]=tt;
to[++tt]=u;next[tt]=head[v];head[v]=tt;
c[tt-1]=s[i].c;
}
while(bfs()) ans+=dfs(1,INF);
printf("%d",ans);
for(int i=1,u,v;i<=m;i++){
u=s[i].u,v=s[i].v;
to[++tt]=v;next[tt]=head[u];head[u]=tt;
to[++tt]=u;next[tt]=head[v];head[v]=tt;
c[tt-1]=INF; f[tt-1]=s[i].w; f[tt]=-s[i].w;
}
S=n+1; ans=0;
to[++tt]=1;next[tt]=head[S];head[S]=tt; c[tt]=K;
to[++tt]=S;next[tt]=head[1];head[1]=tt;
while(spfa()) ans+=get();
printf(" %d",ans);
return 0;
}
BZOJ 1834 【ZJOI2010】 network 网络扩容的更多相关文章
- BZOJ 1834: [ZJOI2010]network 网络扩容(最大流+最小费用最大流)
第一问直接跑最大流.然后将所有边再加一次,费用为扩容费用,容量为k,再从一个超级源点连一条容量为k,费用为0的边到原源点,从原汇点连一条同样的边到超级汇点,然 后跑最小费用最大流就OK了. ---- ...
- bzoj 1834: [ZJOI2010]network 网络扩容 -- 最大流+费用流
1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec Memory Limit: 64 MB Description 给定一张有向图,每条边都有一个容量C和一 ...
- bzoj 1834 [ZJOI2010]network 网络扩容(MCMF)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1834 [题意] 给定一个有向图,每条边有容量C,扩容费用W,问最大流和使容量增加K的最 ...
- BZOJ 1834 [ZJOI2010]network 网络扩容(费用流)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1834 [题目大意] 给定一张有向图,每条边都有一个容量C和一个扩容费用W. 这里扩容费 ...
- bzoj 1834: [ZJOI2010]network 网络扩容
#include<cstdio> #include<iostream> #include<cstring> #define M 100000 #define inf ...
- bzoj 1834: [ZJOI2010]network 网络扩容【最大流+最小费用最大流】
第一问直接跑最大流即可.建图的时候按照费用流建,费用为0. 对于第二问,在第一问dinic剩下的残量网络上建图,对原图的每条边(i,j),建(i,j,inf,cij),表示可以用c的花费增广这条路.然 ...
- BZOJ 1834: [ZJOI2010]network 网络扩容 最小费用流_最大流_残量网络
对于第一问,跑一遍最大流即可. 对于第二问,在残量网络上的两点间建立边 <u,v>,容量为无限大,费用为扩充费用. 跑一遍最小费用流即可. Code: #include <vecto ...
- BZOJ 1834: [ZJOI2010]network 网络扩容(网络流+费用流)
一看就知道是模板题= = ,不说什么了= = PS:回去搞期末了,暑假再来刷题了 CODE: #include<cstdio> #include<iostream> #incl ...
- 【BZOJ】1834: [ZJOI2010]network 网络扩容(最大流+费用流)
http://www.lydsy.com/JudgeOnline/problem.php?id=1834 我又思考人生了T_T,nd的数组开小了,一直wa,调了一个小时才发现啊!!!!!我一直以为我的 ...
- 【BZOJ】1834 [ZJOI2010]network 网络扩容
[算法]网络流-最大流+最小费用最大流(费用流) [题解] 第一问跑最大流. 第二问: 原始边相当于费用为0的边,再原图(跑过最大流的图)基础上添加带费用的边,容量为k(相当于inf). 第一问最大流 ...
随机推荐
- 干货之运用CALayer创建星级评分组件(五角星)
本篇记录星级评分组件的创建过程以及CALayer的运用. 为了实现一个星级评分的组件,使用了CALayer,涉及到mask.CGPathRef.UIBezierPath.动画和一个计算多角星关键节点的 ...
- 【代码笔记】iOS-点评内容
一,效果图. 二,工程图. 三,代码. ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIVie ...
- json官方学习档案
项目经常用json开发,但说实话,对json了解的一直不深入.今天看了下json的官方资料,明了很多. json官方网址:http://www.json.org/json-zh.html JSON(J ...
- Team Leader炖完石头汤后干嘛
在万众创业的互联网年代,挖人组建全明星团队过于奢侈.面对水平参差不齐的团队咋办? 命运真是捉弄,半年前在大美团打工时准备做个NABC的教学项目 ,结果自己就被挖到"Competitors 竞 ...
- MongoDB Java Driver
本文使用 Java 来描述对 Mongodb 的相关操作,数据库版本是 3.2.8,驱动版本为 3.2.2. 本文将讨论 如何连接MongoDB 文档的 CURD 操作 文档的上传和下载 1. 连接到 ...
- 用SQL语句建库建表建约束(用SQl语句在指定盘符创建文件夹)
一 :创建数据库 创建一个数据文件和一个日志文件(MySchool) create database MySchoolon primary --默认属于primary主文件组,可省略(--数 ...
- [20140829]spinlock导致cpu居高不下
背景: 出现cpu高于常规的告警 排查: 1.开跟踪,没有发现cup特别高的查询 2.查看内核cpu使用量,看是否是sql server 端引起 3.查看负荷,是否负荷特别高这里使用 batch re ...
- python中列表、元组、字典内部功能介绍
一.列表(list) 常用功能的介绍:
- java开发中的23中设计模式详解--大话设计模式
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- Linux换源+编译内核总结
换源: 我用的是CentOS,所以下面以其为例,其它OS做法类似,可作参考: 在主机能联网的情况下 进入存放源配置的文件夹 cd /etc/yum.repos.d 备份默认源 mv ./CentOS- ...