代码介绍: 文件数据格式:点的数量,边的数量,源点序号,汇点序号 每条边:起点,终点,容量 从文件中读取数据,构建网络流图,使用dinic算法求解最大流,采用数组邻接表存储数据。 求最大流过程:不断找一条源点到汇点的路径,若有,找出增广路径上每一段权值的最小值,然后构建残余网络。再在残余网络上寻找新 ...
分类:
其他好文 时间:
2020-02-21 12:58:05
阅读次数:
82
前言 网络流问题是一个很深奥的问题,对应也有许多很优秀的算法。但是本文只会讲述dinic算法 最近写了好多网络流的题目,想想看还是写一篇来总结一下网络流和dinic算法以免以后自己忘了。。。 网络流问题简述 一个很普遍的例子就是——你家和自来水厂之间有许多中转站,中转站又由一些水管连接着。我们假设自 ...
分类:
编程语言 时间:
2020-02-21 10:07:32
阅读次数:
123
最小路径覆盖=节点数-最大匹配数,拆成二分图跑dinic/匈牙利即可,注意输出路径的时候判断拆成的入点和出点和另加的反向边 #include<bits/stdc++.h> using namespace std; #define lowbit(x) ((x)&(-x)) typedef long l ...
分类:
其他好文 时间:
2020-02-12 12:41:03
阅读次数:
65
$\quad$ 网络流 (Network Flows)指的是一张联通无向图 $G$,每条边具有两个属性:容量、流量。每条边的流量常用 $f_{i,j}$ 表示,容量常用 $c_{i,j}$ 表示。网络流有 容量限制 (Capacity Constraints),一条边的流量不可以超过它的容量;网络流 ...
分类:
其他好文 时间:
2020-02-11 19:21:37
阅读次数:
91
$\quad$ Dinic 算法其实已经足够处理大多数的网络流了,但还不够快。接下来介绍的是最优秀的增广路最大流算法: ISAP (Improve Shortest Argumenting Path)。它的时间复杂度上界与 Dinic 一样,为 $O(n ^ 2 \cdot m)$。 $\quad$ ...
分类:
编程语言 时间:
2020-02-11 19:15:17
阅读次数:
99
本题可以用最大流也可以用最大匹配(本质一样),用dinic最大流好建图,但码量大,匈牙利码量小,建图费点劲。 最大流:依旧是设一个源点一个汇点,对于每一个种类,连一条到汇点的边,capacity为需要的量,对于每一个试题,从源点连一条capacity为1的边到他,从他对每一个其所属的编号种类连一条c ...
分类:
其他好文 时间:
2020-02-08 00:27:52
阅读次数:
58
include include include include include include define N 100010 define M 300010 define inf 1000000000 using namespace std; namespace dinic{ struct nod ...
分类:
其他好文 时间:
2020-01-28 00:08:53
阅读次数:
90
题源:https://loj.ac/problem/101 主要参考了这篇博客来学习,个人觉得还是讲的比较通俗易懂的:https://blog.csdn.net/weixin_43907802/article/details/84705855 还是debug了很久。。一开始是抄错模板,后来是忘开了二 ...
分类:
编程语言 时间:
2020-01-19 19:09:07
阅读次数:
76
题目大意: 你有一个二分图,分别求出它的匹配数与各个连接匹配的两个点。 正文: 本题考虑用网络流,求匹配数就是二分图匹配模板,但是我们还要求各个连接匹配的两个点。 从网络流($\texttt{DINIC}$)的角度来思考,想匹配的边有什么特性。(给你几秒钟思考时间)我们发现不是匹配的边原来的边权($ ...
分类:
其他好文 时间:
2020-01-17 23:11:04
阅读次数:
97
题目描述 Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑、仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑。 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街道,Elaxia只能从 一个十字路口跑向另外一个十字路口,街道之间只在十字路口处相交。Elaxia每 ...
分类:
其他好文 时间:
2020-01-17 22:53:47
阅读次数:
90