#include<cstdio>
#include<iostream>
#include<cstring>
#define M 100000
#define inf 2139062143
using namespace std;
struct data
{
int l,r,w;
}a[M];
int q[M],d[M],head[M],next[*M],u[*M],v[*M],cnt=,n,m,K,ans;
int cnt1=,head1[M],next1[*M],fro[*M],u1[*M],v1[*M],w1[*M],f[M],fr[M];
void jia(int a1,int a2,int a3)
{
cnt++;
u[cnt]=a2;
v[cnt]=a3;
next[cnt]=head[a1];
head[a1]=cnt;
}
void jia1(int a1,int a2,int a3,int a4)
{
cnt1++;
fro[cnt1]=a1;
u1[cnt1]=a2;
v1[cnt1]=a3;
w1[cnt1]=a4;
next1[cnt1]=head1[a1];
head1[a1]=cnt1;
}
bool bfs()
{
memset(d,,sizeof(int)*(*n));
int h=,t=;
q[]=;
d[]=;
for(;h<t;)
{
h++;
int p=q[h];
for(int i=head[p];i;i=next[i])
if(!d[u[i]]&&v[i])
{
d[u[i]]=d[p]+;
if(d[n])
return ;
t++;
q[t]=u[i];
}
}
return ;
}
int dinic(int s,int f)
{
if(s==n)
return f;
int rest=f;
for(int i=head[s];i&&rest;i=next[i])
if(v[i]&&d[u[i]]==d[s]+)
{
int now=dinic(u[i],min(rest,v[i]));
if(!now)
d[u[i]]=;
v[i]-=now;
v[i^]+=now;
rest-=now;
}
return f-rest;
}
bool spfa()
{
memset(d,,sizeof(int)*(*n));
d[]=;
f[]=;
q[]=;
int h=,t=;
for(;h<t;)
{
h++;
int p=q[h];
f[p]=;
for(int i=head1[p];i;i=next1[i])
if(v1[i]&&d[u1[i]]>d[p]+w1[i])
{
d[u1[i]]=d[p]+w1[i];
fr[u1[i]]=i;
if(!f[u1[i]])
{
f[u1[i]]=;
t++;
q[t]=u1[i];
}
}
}
if(d[n]!=inf)
return ;
return ;
}
void mcf()
{
int mx=inf;
for(int i=fr[n];i;i=fr[fro[i]])
mx=min(mx,v1[i]);
for(int i=fr[n];i;i=fr[fro[i]])
{
v1[i]-=mx;
v1[i^]+=mx;
ans+=mx*(w1[i]);
}
}
int main()
{
scanf("%d%d%d",&n,&m,&K);
for(int i=;i<=m;i++)
{
int a3;
scanf("%d%d%d%d",&a[i].l,&a[i].r,&a3,&a[i].w);
jia(a[i].l,a[i].r,a3);
jia(a[i].r,a[i].l,);
}
for(;bfs();)
ans+=dinic(,inf);
printf("%d ",ans);
for(int i=;i<=cnt;i+=)
{
jia1(a[i/].l,a[i/].r,inf,a[i/].w);
jia1(a[i/].r,a[i/].l,,-a[i/].w);
jia1(a[i/].l,a[i/].r,v[i],);
jia1(a[i/].r,a[i/].l,v[i+],);
}
jia1(,,K,);
jia1(,,,);
ans=;
for(;spfa();)
mcf();
printf("%d\n",ans);
return ;
}

一遍最大流,一遍费用流。第一问跑完之后在残余网络建边,单位费用为扩容费用,

bzoj 1834: [ZJOI2010]network 网络扩容的更多相关文章

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

    第一问直接跑最大流.然后将所有边再加一次,费用为扩容费用,容量为k,再从一个超级源点连一条容量为k,费用为0的边到原源点,从原汇点连一条同样的边到超级汇点,然  后跑最小费用最大流就OK了. ---- ...

  2. bzoj 1834: [ZJOI2010]network 网络扩容 -- 最大流+费用流

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

  3. bzoj 1834 [ZJOI2010]network 网络扩容(MCMF)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1834 [题意] 给定一个有向图,每条边有容量C,扩容费用W,问最大流和使容量增加K的最 ...

  4. BZOJ 1834 [ZJOI2010]network 网络扩容(费用流)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1834 [题目大意] 给定一张有向图,每条边都有一个容量C和一个扩容费用W. 这里扩容费 ...

  5. bzoj 1834: [ZJOI2010]network 网络扩容【最大流+最小费用最大流】

    第一问直接跑最大流即可.建图的时候按照费用流建,费用为0. 对于第二问,在第一问dinic剩下的残量网络上建图,对原图的每条边(i,j),建(i,j,inf,cij),表示可以用c的花费增广这条路.然 ...

  6. BZOJ 1834: [ZJOI2010]network 网络扩容 最小费用流_最大流_残量网络

    对于第一问,跑一遍最大流即可. 对于第二问,在残量网络上的两点间建立边 <u,v>,容量为无限大,费用为扩充费用. 跑一遍最小费用流即可. Code: #include <vecto ...

  7. BZOJ 1834: [ZJOI2010]network 网络扩容(网络流+费用流)

    一看就知道是模板题= = ,不说什么了= = PS:回去搞期末了,暑假再来刷题了 CODE: #include<cstdio> #include<iostream> #incl ...

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

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

  9. 【BZOJ】1834 [ZJOI2010]network 网络扩容

    [算法]网络流-最大流+最小费用最大流(费用流) [题解] 第一问跑最大流. 第二问: 原始边相当于费用为0的边,再原图(跑过最大流的图)基础上添加带费用的边,容量为k(相当于inf). 第一问最大流 ...

随机推荐

  1. Linux_查看进程

    1. 静态: ps -aux 2. 动态: top 3.

  2. 02 key concept

    本章提要-------------------------------------术语, 选择性与基数, 软解析与硬解析, 绑定变量, 扩展的游标共享SQL语句生命周期, 特别关注解析部分------ ...

  3. Java的加密与解密

    package com.wangbo.util; import java.security.Key; import java.security.Security; import javax.crypt ...

  4. openwrt: Makefile 框架分析

    openwrt: Makefile 框架分析 原文链接:blog.chinaunix.net/uid-26675482-id-4704952.html 本篇的主要目的是想通过分析Makefile,了解 ...

  5. 解决淘宝sui插件后退bug

    淘宝的sui插件在微信里,第一次访问没有问题,跳转走以后,再后退回来, 插件就无法正常加载. 一下是官方给出的说法 切换到的新页面中的 js 不执行 由于浏览器安全性考虑的限制以及可能的 js 重复执 ...

  6. mybatis动态SQL中的sql片段

    在mybatis中通过使用SQL片段可以提高代码的重用性,如下情景: 1.创建动态SQL <sql id="sql_count">select count(*)< ...

  7. nginx安装笔记

    双节点安装 1 节点一 1.1 目录 /usr/local cd /usr/local 1.2 openssl rpm -ql openssl /usr/share/doc/openssl-1.0.0 ...

  8. vim 空格和换行的删除和替换

      %s/\s//g %s/\r//g %s/\n//g   把一个很长的一行按空格分为多行 :%s/ +/\r/g简单解释一下:%s :在整个文件范围查找替换/ :分隔符+ :匹配空格,其中“ ”表 ...

  9. php ajax json jquery 记录

    php+jquery+ajax+json简单小例子 <html> <title>php+jquery+ajax+json简单小例子</title> <?php ...

  10. Selenium Grid 运行报错 Exception thrown in Navigator.Start first time ->Error forwarding the new session Empty pool of VM for setup Capabilities

    Selenium Grid 运行报错 : Exception thrown in Navigator.Start first time ->Error forwarding the new se ...