前言 本来先搞计算几何再搞网络流的,但是**总是发网络流的题,然后天天被信息组巨佬爆踩,所以先学一下最基本的Dinic算法吧。我也只是大致理解了流程,其实不懂也没事,只要会堆代码就好了(QAQ),所以下面只有教你如何堆代码啦(……)。 基本概念 图和收发点 一个图是由点集V={vi}和V中元素的无序 ...
分类:
编程语言 时间:
2020-05-22 19:14:06
阅读次数:
57
网络流常见建图套路总结(重制版) [TOC] 前置知识 1. 网络流的基本算法:Dinic最大流,EK+SPFA求费用流 2. 最小割,最小割最大流定理 3. 二分图判定,匹配,相关性质 4. 常见最短路径算法:Dijkstra,SPFA,Floyd 最大流 二分图最大匹配与多重匹配 定义: 二分图 ...
分类:
其他好文 时间:
2020-05-18 21:08:15
阅读次数:
72
最大流 Edmond Karp 原版的是用邻接矩阵写的,太耗内存了,这里改成邻接表。 Dinic 玄学的Dinic ...
分类:
其他好文 时间:
2020-05-16 20:38:32
阅读次数:
54
题目链接 题意 给定一张左部$N$个点,右部$M$个点,$E$条边的二分图,求二分图最大匹配的非可行边的条数 题解 对二分图加入源点和汇点建图跑Dinic,得到一组最大匹配后对残量网络求强联通分量。则边$(x,y)$是非可行边的判定方法为:剩余容量为1且$x$,$y$不属于同一个强联通分量,时间复杂 ...
分类:
其他好文 时间:
2020-05-01 00:42:12
阅读次数:
59
网络流二·最大流最小割定理 AC_Code: 1 #include <bits/stdc++.h> 2 #include <ctime> 3 #include <algorithm> 4 #include <random> 5 using namespace std; 6 typedef long ...
分类:
其他好文 时间:
2020-04-25 01:02:59
阅读次数:
73
dinic 网络流算法 : 反悔边的意义:当一条流量被流入,反向流入的时候,就相当于没有流过。 分层图的意义:对于给定的点,流入< =dep[ u ] 是没有意义的,不会使得当前流更优。 当前弧优化:当前的边已经流光,不再流入。 炸点优化:当前点已经流光,设dep为-1,不再流入。 多路增广:如果一 ...
分类:
其他好文 时间:
2020-04-23 19:20:40
阅读次数:
63
前置知识: 混合图:一幅图中既有单向边,又有双向边。 混合图(既有有向边又有无向边的图)中欧拉环、欧拉路径的判定需要用到网络流这个算法!!! 有向图的欧拉回路的条件:所有的节点出度等于入度。 下面这两题基本差不多,但是建边啊、判断欧拉图啊等还是有区别的。 总之最后都是需要判断是否为满流,如果为满流则 ...
分类:
其他好文 时间:
2020-04-09 14:11:58
阅读次数:
134
Dinic 时间复杂度最坏 O(n*n*m) 平均O(n)。 算法思路:用BFS构建层次图,如果汇点不在层次图中则结束算法返回最大流,否则在层次图中DFS找到图中所有增广路,增广结束后重新建立层次图。 优化:多路增广优化:将节点的所有增广路的到的流量记录下来直接返回。 炸点优化:若改点无流量直接弃掉 ...
分类:
编程语言 时间:
2020-03-26 19:19:08
阅读次数:
95
"传送门" 题意:给一张有向图,让你用最少的简单路径覆盖所有的点。 考虑这样一个东西,刚开始,我们有$n$条路径,每条路径就是单一的一个点,那么我们的目的就是进行若干次操作将路径两两合并,这样对于一个以节点$x$,它作为路径的端点最多被合并两次(一次连出边一次连入边)。 于是考虑二分图,将点$x$炸 ...
分类:
其他好文 时间:
2020-02-23 18:39:30
阅读次数:
90