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…

setSignVisible的修改

store传入accountReducer 1.从cookie中获取id,avatar,nickname.2.createStore(reducer, initState)传入reducer,可以在页面中state.accountReducer.current_account获取 const middleware routerMiddleware(browserHistory); let initState {};if(Cookie.hasItem("id&qu…

DGbroker故障切换示例

1.主库故障 SQL> startup ORACLE instance started.Total System Global Area 1068937216 bytes Fixed Size 2260088 bytes Variable Size 910164872 bytes Database Buffers 150994944 bytes Redo Buffers 5517312 bytes ORA-00205: e…

html 自动触发 事件,js自动触发事件自定义事件

在有些情况下&#xff0c;我们需要程序逻辑自动触发元素的事件&#xff0c;例如js提供了click()&#xff0c; form提供了reset(),submit()等方法&#xff01;在jquery中提供了trigger()方法帮助我们自动触发事件&#xff0c;原理是什么呢&#xff1f;接下来让我们一探究竟&…

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

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

关于 php mysql pdo cannot find driver 解决方案

1、下载 文件 或者 进入 在PHP源码包中进入ext/pdo_mysql http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz 2、解压文件tar zxvf PDO_MYSQL-1.0.2.tgz 3、配置和编译文件cd PDO_MYSQL-1.0.2/usr/local/php/bin/phpize./configure –with-php-config/usr/local/php/bin/php-config…

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

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

Codeforces 821C - Okabe and Boxes

821C - Okabe and Boxes 思路&#xff1a;模拟。因为只需要比较栈顶和当前要删除的值就可以了&#xff0c;所以如果栈顶和当前要删除的值不同时&#xff0c;栈就可以清空了(因为下一次的栈顶不可能出现在前面那些值中)。 代码&#xff1a; #include<bits/stdc.h> using n…

Java中forEach, 用来遍历数组

这里的for是Java中forEach, 用来遍历数组的。for(int i : d) 就是遍历int型数组d的 每一次访问数组d的时候读取的数据放入int型的i中。和for(int i0;i<d.length();i)是一样的&#xff0c;但是forEach的可用场合较多。public class e1 {public static void main(String[] …

HDU -2546饭卡(01背包+贪心)

这道题有个小小的坎&#xff0c;就是低于5块不能选&#xff0c;大于5块&#xff0c;可以任意选&#xff0c;所以就在初始条件判断一下剩余钱数&#xff0c;然后如果大于5的话&#xff0c;这时候就要用到贪心的思想&#xff0c;只要大于等于5&#xff0c;先找最大的那个&#xf…

图片向上滚动字幕代码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。即使用…

JavaScript数组去重

1、数组去重&#xff1b; Array类型并没有提供去重复的方法&#xff0c;如果要把数组的重复元素干掉&#xff0c;那得自己想办法&#xff1a; 方法一&#xff1a;利用indexOf方法&#xff1b; var aa[1,3,5,4,3,3,1,4] function arr(arr) {var result[]for(var i0; i<arr.le…

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…

2016,请不要在公司混日子!

1、无论为谁打工&#xff0c;要为自己学东西&#xff0c;客观上为公司创造价值。 我自己当年&#xff0c;无论我在方正给国内企业工作&#xff0c;还是我在雅虎给外国人工作&#xff0c;我都跟别人最大的不一样&#xff0c;我从来不觉得我在给他们打工&#xff0c;我真的可能是…

数据库作业[定时执行任务]的创建

--每月执行的作业 exec p_createjob jobnamemm,sqlselect * from syscolumns,freqtypemonth --每周执行的作业 exec p_createjob jobnameww,sqlselect * from syscolumns,freqtypeweek --每日执行的作业 exec p_createjob jobnamea,sqlselect * from syscolumns --每日执行的作…

《算法之道》精华 经典算法部分

《算法之道》精华 经典算法部分 本书作者邹恒明&#xff0c;作者另有一本书《数据结构之弦》&#xff0c;以及《操作系统之哲学原理》都是非常好的书这本书能够算得上是深入浅出&#xff0c;文笔非常好。作者加入了非常多自己的思考本文包含经典算法部分第十章 排序与次序 插入…

学生社团网站html,学生社团活动平台的设计与实现.docx

PAGE 67学生社团活动平台的设计与实现摘 要本系统立足于实现社团活动申请与审批、资源申请与审批等工作&#xff0c;面向高校中所有的社团&#xff0c;建立一个使用便捷、可靠的社团活动平台&#xff0c;从而更方便地进行社团活动的申请、社团资源的申请及相应审批&#xff0c;…

tornado 学习笔记17 HTTPServerRequest分析

代表Http请求。 所有的属性都是字符串型。 17.1 属性 (1) method:请求方法类型&#xff0c;比如”GET”、”POST” (2) uri: 请求的uri (3) path:请求路径&#xff0c;作为uri的一部分。 (4) query&#xff1a;查询字符串&#xff1a;作为uri的一部分。 (5) version&#xff1a…