BZOJ1834 [ZJOI2010]network 网络扩容

网络流训练好题。。。但是要给差评!蒟蒻表示这就是板子题,然后做了半个小时T T

先跑一边最大流,得到第一问答案ans。

第二问:原先的边不动,费用为0。

然后对每条边在上面再加一条边,流量为inf,费用为修改费用。

n向T连一条边,流量为ans + k,费用为0。

跑一边费用流即可。

 

  1 /**************************************************************
  2     Problem: 1834
  3     User: rausen
  4     Language: C++
  5     Result: Accepted
  6     Time:64 ms
  7     Memory:1296 kb
  8 ****************************************************************/
  9  
 10 #include <cstdio>
 11 #include <cstring>
 12 #include <algorithm>
 13  
 14 using namespace std;
 15 const int N = 1005;
 16 const int M = 10005;
 17 const int inf = (int) 1e9;
 18  
 19 struct Edges {
 20     int x, y, c, w;
 21 } E[M];
 22  
 23 struct edges {
 24     int next, to, f, cost;
 25     edges() {}
 26     edges(int _n, int _t, int _f, int _c) : next(_n), to(_t), f(_f), cost(_c) {}
 27 } e[M << 1];
 28  
 29 int n, m, k, last_ans;
 30 int S, T;
 31 int first[N], tot;
 32 int q[N], d[N], g[N];
 33 bool v[N];
 34  
 35 inline int read() {
 36     int x = 0, sgn = 1;
 37     char ch = getchar();
 38     while (ch < '0' || '9' < ch) {
 39         if (ch == '-') sgn = -1;
 40         ch = getchar();
 41     }
 42     while ('0' <= ch && ch <= '9') {
 43         x = x * 10 + ch - '0';
 44         ch = getchar();
 45     }
 46     return sgn * x;
 47 }
 48  
 49 inline void Add_Edges(int x, int y, int f, int c) {
 50     e[++tot] = edges(first[x], y, f, c), first[x] = tot;
 51     e[++tot] = edges(first[y], x, 0, -c), first[y] = tot;
 52 }
 53  
 54 bool bfs() {
 55     memset(d, 0, sizeof(d));
 56     q[1] = S, d[S] = 1;
 57     int l, r, x, y;
 58     for (l = r = 1; l != (r + 1) % N; (++l) %= N)
 59         for (x = first[q[l]]; x; x = e[x].next){
 60             y = e[x].to;
 61             if (!d[y] && e[x].f)
 62                 q[(++r) %= N] = y, d[y] = d[q[l]] + 1;
 63         }
 64  
 65     return d[T];
 66 }
 67    
 68 int dinic(int p, int limit) {
 69     if (p == T || !limit) return limit;
 70     int x, y, tmp, rest = limit;
 71     for (x = first[p]; x; x = e[x].next)
 72         if (d[y = e[x].to] == d[p] + 1 && e[x].f && rest) { 
 73             tmp = dinic(y, min(rest, e[x].f));
 74             rest -= tmp;
 75             e[x].f -= tmp, e[x ^ 1].f += tmp;
 76             if (!rest) return limit;
 77         }
 78     if (limit == rest) d[p] = 0;
 79     return limit - rest;
 80 }
 81    
 82 int Dinic() {
 83     int res = 0, x;
 84     while (bfs())
 85         res += dinic(S, inf);
 86     return res;
 87 }
 88  
 89 void work1() {
 90     int i;
 91     memset(first, 0, sizeof(first));
 92     for (i = tot = 1; i <= m; ++i)
 93         Add_Edges(E[i].x, E[i].y, E[i].c, 0);
 94     S = 1, T = n;
 95     printf("%d ", last_ans = Dinic());
 96 }
 97  
 98 inline int calc() {
 99     int flow = inf, x;
100     for (x = g[T]; x; x = g[e[x ^ 1].to])
101         flow = min(flow, e[x].f);
102     for (x = g[T]; x; x = g[e[x ^ 1].to])
103         e[x].f -= flow, e[x ^ 1].f += flow;
104     return flow;
105 }
106   
107 bool spfa() {
108     int x, y, l, r;
109     for (x = 1; x <= T; ++x)
110         d[x] = inf;
111     d[S] = 0, v[S] = 1, q[0] = S;
112     for(l = r = 0; l != (r + 1) % N; ++l %= N) {
113         for (x = first[q[l]]; x; x = e[x].next)
114             if (d[q[l]] + e[x].cost < d[y = e[x].to] && e[x].f) {
115                 d[y] = d[q[l]] + e[x].cost;
116                 g[y] = x;
117                 if (!v[y])
118                     q[(++r) %= N] = y, v[y] = 1;
119             }
120         v[q[l]] = 0;
121     }
122     return d[T] != inf;
123 }
124  
125 inline int work() {
126     int res = 0;
127     while (spfa())
128         res += calc() * d[T];
129     return res;
130 }
131  
132 void work2() {
133     int i;
134     memset(first, 0, sizeof(first));
135     for (i = tot = 1; i <= m; ++i) {
136         Add_Edges(E[i].x, E[i].y, E[i].c, 0);
137         Add_Edges(E[i].x, E[i].y, inf, E[i].w);
138     }
139     Add_Edges(n, n + 1, last_ans + k, 0);
140     S = 1, T = n + 1;
141     printf("%d\n", work());
142 }
143  
144 int main() {
145     int i;
146     n = read(), m = read(), k = read();
147     for (i = 1; i <= m; ++i)
148         E[i].x = read(), E[i].y = read(), E[i].c = read(), E[i].w = read();
149     work1();
150     work2();
151     return 0;
152 }
View Code

 

转载于:https://www.cnblogs.com/rausen/p/4162739.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257894.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 更新平台,Android更新平台架构方案

这篇文章是去年写的&#xff0c;我们的两款app一直这使用umeng的更新服务&#xff0c;但是16年umeng开始放弃更新服务&#xff0c;考虑到切换到其他更新平台也会面临这样的问题&#xff0c;我开始着手自己搭建一个更新平台。整体方案包含前后端&#xff0c;客户端代码封装成jar…

Storm编程入门API系列之Storm的可靠性的ACK消息确认机制

概念&#xff0c;见博客 Storm概念学习系列之storm的可靠性 什么业务场景需要storm可靠性的ACK确认机制&#xff1f; 答&#xff1a;想要保住数据不丢&#xff0c;或者保住数据总是被处理。即若没被处理的&#xff0c;得让我们知道。 public void nextTuple() {num;System.out.…

iOS网络编程开发-数据加密

iOS网络编程开发-数据加密 一、简单说明 1.说明 在开发应用的时候&#xff0c;数据的安全性至关重要&#xff0c;而仅仅用POST请求提交用户的隐私数据&#xff0c;还是不能完全解决安全问题。 如&#xff1a;可以利用软件&#xff08;比如Charles&#xff09;设置代理服务器&am…

图片向上滚动字幕代码html,如何通过制作滚动字幕的软件实现这种片尾的向上滚动字幕效果...

如何制作滚动字幕 特殊滚动类字幕制作 向上向下向左向右滚动字幕制作效果 含拖动和消失全程 真是酷B了爽呆了&#xff0c;赶快学习吧&#xff01;电影、连续剧等影视作品片尾&#xff0c;都会在播放片尾曲时&#xff0c;出现向上滚动的字幕&#xff0c;显示演员表、导演、编剧等…

【图片服务器】搭建Nginx图片服务器

一、安装Nginx 二、安装vsftpd 三、开始搭建Nginx图片服务器 1、效果 例如&#xff1a;图片通过ftp服务上传到/home/ftpuser/www/images目录下&#xff0c;我想通过访问Nginx服务器来访问ftp目录下的图片文件&#xff0c;该url为http://192.168.128.128/images/xxx.jpg。即使用…

html怎么让方块自动旋转,如何使用纯CSS实现一个圆环旋转错觉的动画效果(附源码)...

本篇文章给大家带来的内容是关于如何使用纯CSS实现一个圆环旋转错觉的动画效果&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。效果预览源代码下载https://github.com/comehope/front-end-daily-challenges代码解读定义 dom&…

同志亦凡人第五季/全集BQueer As Folk 5迅雷下载

同志亦凡人 第五季 Queer as Folk Season 5 (2005) 本季看点&#xff1a;这是一群生活在匹兹堡男人和男人&#xff0c;女人和女人的故事。在他们的王国里有各色人物。王国的国王Brian&#xff08;葛尔?哈罗德 Gale Harold 饰&#xff09;&#xff0c;只追求性不问爱&#xff1…

html怎么使图片无法另存为,如何禁止图片另存为?禁止网页另存为到本地的方法...

在很多企事业单位&#xff0c;处于商业机密保护的需要&#xff0c;常常需要禁止一些文件格式的“另存为”功能&#xff0c;防止通过“另存为”将文件另行保存&#xff0c;据为己有的目的&#xff1b;尤其是在局域网中访问服务器共享文件的时候&#xff0c;常常需要禁止将共享文…

正益工场为京西创客工场输送双创“软”实力

12月30日&#xff0c;中关村门头沟科技园“京西创客工场”正式揭牌&#xff0c;这里将成为京西“生态科创”的聚集地。正益工场作为唯一入驻的“移动互联网”双创生态平台&#xff0c;将为双创输送“移动技术移动模式”等软实力。北京市副市长隋振江、市政协、中关村管委会等领…

几种服务器端IO模型的简单介绍及实现(转载)

作者&#xff1a;阿凡卢 出处&#xff1a;http://www.cnblogs.com/luxiaoxun/服务器端几种模型&#xff1a; 1、阻塞式模型&#xff08;blocking IO&#xff09; 我们第一次接触到的网络编程都是从 listen()、accpet()、send()、recv() 等接口开始的。使用这些接口可以很方便的…

2021年高考成绩查询襄阳状元,大胆猜测一下,2021年高考,湖北省文理状元会花落谁家?...

随着2021年高考的逼近&#xff0c;考生进入紧张有序的复习中&#xff0c;家长也在为孩子筹谋着哪所学校更适合&#xff0c;作为吃瓜群众的我们&#xff0c;可能更关注今年湖北省的文理科状元会花落谁家&#xff0c;要知道&#xff0c;一所学校如果可以出现一名高考状元&#xf…

为什么写Java程序需要接口

为什么写Java程序需要接口 我之所以以这个作为标题&#xff0c;并不是为了玩噱头&#xff0c;讲一些似是而非的空话&#xff0c;还是以探索加发现&#xff0c; 追本溯源的讲解一下为什么Java需要接口&#xff0c;怎么理解&#xff0c;怎么用它。 首先接口并不是Java才有的&…

《领域特定语言》一1.5使用代码生成

1.5使用代码生成 在迄今为止的讨论中&#xff0c;要处理DSL&#xff0c;组装“语义模型”&#xff08;第11章&#xff09;&#xff0c;然后执行语义模型&#xff0c;提供我们希望从控制器得到的行为。在语言圈子里&#xff0c;这种方式称为解释&#xff08;interpretation&…

SVG 基础图形

SVG 基础图形 SVG包含了以下的基础图形元素&#xff1a; 矩形&#xff08;包括可选的圆角&#xff09;&#xff0c;使用<rect>元素创建圆形&#xff0c;使用<circle>元素创建椭圆形&#xff0c;使用<ellipse>元素创建直线&#xff0c;使用<line>元素创…

枣庄三中高考2021成绩查询,2021枣庄中考成绩查询系统入口

2021枣庄中考成绩查询系统入口2021-05-20 19:11:35文/王佳慧2021年&#xff0c;枣庄的中考时间快到了&#xff0c;本文分享了枣庄中考成绩查询入口&#xff0c;系统开通后考生可登陆查询成绩。枣庄中考成绩查询入口志愿填报须知1.录取标准&#xff1a;提前批、第一批、第三批学…

移动端”宴席知多少

转载(http://adt.aicai.com/index.php/archives/179/) 瞎折腾移动端的项目已经很长一段时间了&#xff0c;并不像其它企业一样&#xff0c;可以有项目组去完成&#xff0c;基本都是一个人瞎尝试&#xff0c;时而web&#xff0c;时而web app。恍恍惚惚过了这段岁月&#xff0c;也…

快速的取整方法(~~)

为什么80%的码农都做不了架构师&#xff1f;>>> 最近看一篇js装逼小技巧————双波浪号的妙用(将内容转化为数字,或者小数取整)&#xff0c;但是本身我的JavaScript水平比较低对其底层操作和其使用范围不甚了解&#xff1b;通过翻阅资料现进行简单的整理。 ###装…

git log友好显示

查看commit 提交日志 $ git log $git log --prettyoneline $git reflog 显示所有提交记录&#xff0c;包括已经回退的提交&#xff0c;如图&#xff1a;提交了abc 和 bb 然后回退到 abc   $git log 只显示abc提交 可以使用 $git reset --hard commit号 回退到bb git reflog…

南理工计算机技术专业学位,南京理工大学计算机技术(专业学位)考研难吗

很多考生在准备南京理工大学计算机技术(专业学位)考研难吗&#xff1f;是考研报考的时候都会产生这样的疑问&#xff1a;这个专业的研究生好吗&#xff1f;适合我吗&#xff1f;对我以后的人生和职业会有帮助吗&#xff1f;考生在准备南京理工大学计算机技术(专业学位)专业考研…

《分布式系统:概念与设计》一2.3.2 体系结构模式

2.3.2 体系结构模式 体系结构模式构建在上述讨论过的相对原始的体系结构元素之上&#xff0c;提供组合的、重复出现的结构&#xff0c;这些结构在给定的环境中能运行良好。它们未必是完整的解决方案&#xff0c;但当与其他模式组合时&#xff0c;它们会更好地引导设计者给出一…