"题意" 前置知识:最小割树,不会去 "模板" 学学。 会了模板这题就很裸了,直接就最小割树,求有多少种不同的边权即可。 code: ...
分类:
其他好文 时间:
2019-12-26 21:04:22
阅读次数:
56
关于最小费用最大流 这里的最小费用最大流是在最大流的基础上把费用最小化 Ek费用流 因为会有负边权,所以需要用Spfa求出最小费用,之后Ek一发就好 代码还是不放了吧 ZKW费用流 和Dinic几乎一样,就是在dfs的时候记一个vis数组即可,否则出0环就写比了 ZKW费用流在层数较少的时候会很快, ...
分类:
其他好文 时间:
2019-12-08 17:56:30
阅读次数:
129
网络流主要解决三种问题:最大流、最小流和费用流。 最大流算法主要有三种:EK算法、Dinic算法、SAP算法。 本篇博客是关于SAP算法的。最坏的情况下,SAP算法将达到复杂度O(VE2)。 1 #include <iostream> 2 #include <cstdio> 3 #include < ...
分类:
编程语言 时间:
2019-11-23 19:55:31
阅读次数:
72
网络流主要解决三种问题:最大流、最小流和费用流。 最大流算法主要有三种:EK算法、Dinic算法、SAP算法。 本篇博客是关于Dinic算法的。最坏的情况下,Dinic算法将达到复杂度O(V2E)。 1 #include <iostream> 2 #include <cstdio> 3 #inclu ...
分类:
编程语言 时间:
2019-11-22 01:19:31
阅读次数:
66
第一道题是模板题,下面主要是两种模板,但都用的是Dinic算法(第二个题也是) 第一题: 题意就不需要讲了,直接上代码: vector代码: 1 //invalid types 'int[int]' for array subscript :字母重复定义 2 #include<stdio.h> 3 ...
分类:
其他好文 时间:
2019-11-16 21:55:43
阅读次数:
96
1 #include<iostream> 2 #include<queue> 3 #include<cstring> 4 using namespace std; 5 6 const int maxn = 60; 7 8 const int INF = 0x3f3f3f3f; 9 int n; 10 ...
分类:
其他好文 时间:
2019-11-09 00:12:46
阅读次数:
78
void add_dinic(int u, int v) { e[++cnt].v = v; e[cnt].w = 0; e[cnt].nxt = head[u]; head[u] = cnt; } int dfs_dinic(int x, int flow) { if (x == ed) retu ...
分类:
编程语言 时间:
2019-11-09 00:03:06
阅读次数:
114
..突然发现自己拖了很久都没有学习有关网络流的东西了,所以先从模板开始写起吧. dinic code: #include<iostream> #include<cstring> #include<queue> #define INF 0x3f3f3f3f const int MAXN = 1e6+5 ...
分类:
其他好文 时间:
2019-11-07 18:50:47
阅读次数:
73
这道题跟求最大流的时候差不多。 都是先构造可行流,然后判断是否可行, 可行的话,就利用残余流量,构造从汇点t跑到源点s的最大流, 如何求出答案呢。 在第一次求可行流的dinic后,跟求最大流的时候一样,从t到s是可行流的流量; 这个时候t到s的反向边,也就是s到t的流量就是t到s流的量(因为t到s定 ...
分类:
其他好文 时间:
2019-11-06 22:28:04
阅读次数:
106
网络流可以解决 二分图最大匹配(网络中的每条边的容量设为1) 多重匹配() 网络流最大流问题的算法 Edmonds karp增广路算法A$O(m^{2}n)$ dinic算法 1.在图上找到一条从源点到汇点的路径(称为‘增广路’)。 2.取增广路上的残量最小值v。(也就是流过的路径中流量最小的那一个 ...
分类:
其他好文 时间:
2019-11-03 20:12:24
阅读次数:
89