bzoj1834
第一问很好搞。第二问事实上可以这么想。如果一条边的流量还有,那么我们走过去不要钱,否则要钱,于是跑个费用流,就好了
(其实跑k次spfa也可以,我是这么写的)
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
const int inf=0x3f3f3f3f;
struct edge
{
int to,nxt,f,c;
}e[];
int n,m,k,cnt=,ans;
int g[],prev[],pree[],dist[],used[];
void link(int u,int v,int f,int c)
{
e[++cnt].nxt=g[u];
g[u]=cnt;
e[cnt].to=v;
e[cnt].f=f;
e[cnt].c=c;
}
inline void ins(int u,int v,int f,int c)
{
link(u,v,f,c); link(v,u,,inf);
}
inline int Min(int x,int y)
{
return x<y?x:y;
}
bool bfs()
{
queue<int>q;
memset(dist,inf,sizeof(dist));
dist[]=;
q.push();
while(!q.empty())
{
int u=q.front(); q.pop();
for(int i=g[u];i;i=e[i].nxt)
{
int v=e[i].to;
if(e[i].f&&dist[v]==inf)
{
dist[v]=dist[u]+;
q.push(v);
}
}
}
return dist[n]!=inf;
}
int dfs(int u,int delta)
{
if(u==n) return delta;
int ret=;
for(int i=g[u];i&δi=e[i].nxt)
{
int v=e[i].to;
if(dist[v]==dist[u]+&&e[i].f)
{
int dd=dfs(v,Min(e[i].f,delta));
delta-=dd;
e[i].f-=dd;
e[i^].f+=dd;
ret+=dd;
}
}
return ret;
}
void spfa()
{
queue<int>q;
memset(dist,inf,sizeof(dist));
memset(used,,sizeof(used));
dist[]=;
q.push();
while(!q.empty())
{
int u=q.front(); q.pop();
used[u]=;
for(int i=g[u];i;i=e[i].nxt)
{
int v=e[i].to;
if((dist[v]>dist[u]&&e[i].f>)||(dist[v]>dist[u]+e[i].c)&&e[i].f==)
{
if(e[i].f>) dist[v]=dist[u];
else dist[v]=dist[u]+e[i].c;
prev[v]=u;
pree[v]=i;
if(!used[v])
{
used[v]=;
q.push(v);
}
}
}
}
}
int MinCost()
{
int u=n,ret=;
while(u!=)
{
if(e[pree[u]].f>) e[pree[u]].f--;
u=prev[u];
}
return dist[n];
}
inline void MinCostFlow()
{
ans=;
while(k--)
{
spfa();
ans+=MinCost();
}
printf("%d",ans);
}
inline void dinic()
{
while(bfs())
{
ans+=dfs(,inf);
}
printf("%d ",ans);
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=m;i++)
{
int u,v,f,c; scanf("%d%d%d%d",&u,&v,&f,&c);
ins(u,v,f,c);
}
dinic();
MinCostFlow();
return ;
}
bzoj1834的更多相关文章
- 【BZOJ1834】网络扩容(最大流,费用流)
[BZOJ1834]网络扩容(最大流,费用流) 题面 Description 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用.求: 1. 在不扩容的情况下 ...
- bzoj1834: [ZJOI2010]network 网络扩容 费用流
bzoj1834 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用. 求: 1.在不扩容的情况下,1到N的最大流: 2.将1到N的最大流增加K所需的最小扩容 ...
- 【BZOJ1834】[ZJOI2010]network 网络扩容 最大流+最小费用流
[BZOJ1834][ZJOI2010]network 网络扩容 Description 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用.求: 1. 在不 ...
- 【BZOJ1834】network 网络扩容(最大流,费用流)
题意:给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用. 求: 1. 在不扩容的情况下,1到N的最大流: 2. 将1到N的最大流增加K所需的最小扩容费用. ...
- BZOJ-1834 网络扩容 最小费用最大流+最大流+乱搞
1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 2269 Solved: 1136 [Submit ...
- BZOJ1834 [ZJOI2010]network 网络扩容(最小费用最大流)
挺直白的构图..最小费用最大流的定义. #include<cstdio> #include<cstring> #include<queue> #include< ...
- bzoj1834 [ZJOI2010]network 网络扩容
第一问跑最大流,第二问新建一条边连接0和1,流量为上第一问的答案+k,费用为0,接下来图中每条边拆成两条边,第一条容量为C费用为0,第二条容量无穷费用为W,再跑一遍费用流即可. 代码 #include ...
- bzoj1834: [ZJOI2010]network 网络扩容
努力看了很久样例一直过不了...然后各种输出中间过程啊巴拉巴拉弄了1h,没办法了...然后突然想到啊原来的边可以用啊为什么不用...于是A了...感人肺腑 #include<cstdio> ...
- bzoj-1834 network 网络扩容 【网络流】
这题就是复习下网络流. #include <bits/stdc++.h> #define rep(i, a, b) for (int i = a; i <= b; i++) #def ...
随机推荐
- [No00004A]为什么你看了很多书,却依然没有洞见
摘要: 前几天有人在知乎上问:今天就回答下很多人问了很久的这个问题,并且解释一下如何构建系统化的知识体系.我想很多人看到这个问题,期待的答案是一个书单,可是我要告诉你这并没有什么卵用.我想大部分人都经 ...
- java 22 - 5 多线程之获取和设置线程对象的名称
如何获取线程对象的名称呢? public final String getName():获取线程的名称.如何设置线程对象的名称呢? public final void setName(String n ...
- poj2676 Sudoku
Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17953 Accepted: 8688 Special ...
- SQLite 增、删、改、查
1.iOS中实现SQLite的增.删.改.查 http://www.jianshu.com/p/0b9b78e704a4. 2.用数据库实现收藏功能 http://www.jianshu.com/p ...
- 如何撰写PRD
PRD(Product-Requirement-Document,产品需求文档),这对于任何一个产品经理来说都不会陌生的一个文档,一个PRD是衡量一个产品经理整体思维的标准,一个PRD可以看出一个产品 ...
- Windows系统服务器IIS7.5 Asp.net支持10万请求的设置方法
问题现象 ECS Windows系统服务器基于IIS搭建的网站由于IIS默认的配置,服务器最多只能处理5000个同时请求,访问量大时很容易导致报错: Error Summary: HTTP Erro ...
- 针对苹果最新审核要求为应用兼容IPv6
在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务.2016年初开始所有提交到App Store的应用必须支持IPv6.为确保现有的应用是兼容的,我们需要注意下面几点. 不建议使用底层的网 ...
- win7的优化-1:隐藏我的电脑导航栏里的收藏等项目
1. Type regedit in RUN or Start Menu search box and press Enter. It'll open Registry Editor. 2. Now ...
- Broadmann area (wiki)
Source: https://en.wikipedia.org/wiki/Brodmann_area Lateral surface Medial serface Areas 3, 1 & ...
- 【MVC】AJAX+PartialView实现商城首页的楼层加载
使用AJAX实现楼层加载的例子已经非常多,但是html代码大都是手动拼接的,编写不便,而且难以维护. 下面就使用AJAX+PartialView来实现 1.html代码 <!--楼层1开始--& ...