BZOJ 1834: [ZJOI2010]network 网络扩容(网络流+费用流)
一看就知道是模板题= = ,不说什么了= =
PS:回去搞期末了,暑假再来刷题了
CODE:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#define maxn 1010
#define maxm 20010
#define inf 0x7fffffff
using namespace std;
struct edges{
int to,next,cap,dist;bool b;
}edge[maxm];
int n,m,s,t,k,l;
int next[maxn],dist[maxn],way[maxn],h[maxn],p[maxn],gap[maxn];
bool b[maxn];
queue<int> q;
int addedge(int from,int to,int cap,int dist,bool bo){
l++;
edge[l*]=(edges){to,next[from],cap,dist,bo};
edge[l*+]=(edges){from,next[to],,-dist,bo};
next[from]=l*;next[to]=l*+;
return ;
}
bool spfa(){
memset(b,,sizeof(b));
for (int i=;i<=n;i++) dist[i]=inf;
dist[]=;
q.push();
while (!q.empty()){
int u=q.front();q.pop();
b[u]=;
for (int i=next[u];i;i=edge[i].next)
if (edge[i].cap&&dist[edge[i].to]>dist[u]+edge[i].dist) {
dist[edge[i].to]=dist[u]+edge[i].dist;
way[edge[i].to]=i;
if(!b[edge[i].to]){
b[edge[i].to]=;
q.push(edge[i].to);
}
}
}
if (dist[t]==inf) return ;
return ;
}
int mcmf(int cap){
int cost=;
while (spfa()){
int x=n,flow=inf;
while (x!=){
flow=min(flow,edge[way[x]].cap);
x=edge[way[x]^].to;
}
if (flow>=cap) return (cost+=dist[n]*cap);
cost+=dist[n]*flow;
cap-=flow;
x=n;
while(x!=){
edge[way[x]].cap-=flow;
edge[way[x]^].cap+=flow;
x=edge[way[x]^].to;
}
}
return cost;
}
int sap(int u,int flow){
if (u==t) return flow;
int cur=;
for (int i=p[u];i;i=edge[i].next)
if (edge[i].b&&edge[i].cap&&h[u]==h[edge[i].to]+){
int cut=sap(edge[i].to,min(flow-cur,edge[i].cap));
edge[i].cap-=cut;edge[i^].cap+=cut;
p[u]=i;
if ((cur+=cut)==flow ) return flow;
}
if (!(--gap[h[u]])) h[s]=n;
gap[++h[u]]++;
p[u]=next[u];
return cur;
}
int maxflow(){
memset(gap,,sizeof(gap));
memset(h,,sizeof(h));
gap[]=n;
for(int i=;i<=n;i++) p[i]=next[i];
int flow=;
while (h[s]<n) flow+=sap(s,inf);
return flow;
}
int main(){
scanf("%d%d%d",&n,&m,&k);
s=,t=n;
for (int i=;i<=m;i++) {
int x,y,cap,d;
scanf("%d%d%d%d",&x,&y,&cap,&d);
addedge(x,y,cap,,);
addedge(x,y,inf,d,);
}
int ans=maxflow();
printf("%d %d\n",ans,mcmf(k));
return ;
}
|
|
BZOJ 1834: [ZJOI2010]network 网络扩容(网络流+费用流)的更多相关文章
- BZOJ 1834 [ZJOI2010]network 网络扩容(费用流)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1834 [题目大意] 给定一张有向图,每条边都有一个容量C和一个扩容费用W. 这里扩容费 ...
- bzoj 1834: [ZJOI2010]network 网络扩容【最大流+最小费用最大流】
第一问直接跑最大流即可.建图的时候按照费用流建,费用为0. 对于第二问,在第一问dinic剩下的残量网络上建图,对原图的每条边(i,j),建(i,j,inf,cij),表示可以用c的花费增广这条路.然 ...
- BZOJ_1834_[ZJOI2010]network 网络扩容_费用流
BZOJ_1834_[ZJOI2010]network 网络扩容_费用流 题意: 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用. 求: 1.在不扩容的 ...
- 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 网络扩容(最大流+费用流)
http://www.lydsy.com/JudgeOnline/problem.php?id=1834 我又思考人生了T_T,nd的数组开小了,一直wa,调了一个小时才发现啊!!!!!我一直以为我的 ...
- bzoj 1834 [ZJOI2010]network 网络扩容(MCMF)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1834 [题意] 给定一个有向图,每条边有容量C,扩容费用W,问最大流和使容量增加K的最 ...
- bzoj 1834: [ZJOI2010]network 网络扩容
#include<cstdio> #include<iostream> #include<cstring> #define M 100000 #define inf ...
- BZOJ 1834: [ZJOI2010]network 网络扩容 最小费用流_最大流_残量网络
对于第一问,跑一遍最大流即可. 对于第二问,在残量网络上的两点间建立边 <u,v>,容量为无限大,费用为扩充费用. 跑一遍最小费用流即可. Code: #include <vecto ...
随机推荐
- jQuery源码学习(2):选择器初窥
选择器初窥 代码架构: jQuery选择器可以依照传入数据的类型分为五大类: 传入字符串:$("div"), $("#id"), $(".div1&q ...
- HTML5 EventSource的用法
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 获取linq生成的sql语句
命名空间:using System.Data.Objects; var query = db.TxtRes.Join(db.LangRes, a => new { id1 = a.ResID, ...
- 学习生命周期activity
2014年4月2日 08:31:27 开始学习activity周期, 简单了解了几个方法,写了几个打印语句,知道了先后顺序
- 【Xilinx-Petalinux学习】-06-OpenCV通过USB摄像头采集图像。
占位, 实现USB摄像头的图像采集与保存
- HUSTOJ 2796 && SPOJ1811
传送门:http://begin.lydsy.com/JudgeOnline/problem.php?id=2796 题解:后缀自动机,很裸,但是感觉对后缀自动机还不是特别理解,毕竟我太蒟蒻,等我精通 ...
- 九 Android基本知识介绍
1.Package Package,中文翻译过来是包的意思.安卓系统的程序是以apk作为扩展名的,.apk就是android package的简写,package也就是这个app的唯一标识,其实这里的 ...
- iOS 之 CALayer与UIView的区别
最大区别:CALayer (图层)不会直接渲染到屏幕上. UIView是iOS系统中界面元素的基础,所有的界面元素都继承自它.它本身完全是由CoreAnimation来实现的. 真正的绘图部分,是由一 ...
- js框架Modernizr是什么东西? 他是前端开发HTML5和CSS3的强有力前端js检测类库
最近在研究modernizr的前端框架,发现这个Modernir对前端写页面非常友好,并且能够很快的建立起适应任何设备的html页面哦.在这里分享下基础教程,让大伙对modernizr是什么?做什么用 ...
- 高斯RBF核函数中Sigma取值和SVM分离面的影响
1:高斯RBF核函数的定义 k(x) = exp(-x^2/(2×sigma)) 在MATLAB中输入一下代码:ezsurf('exp(-x^2/(2*sigma^2))'); 在GOOGLE中输入“ ...