随笔分类 - 图论——网络流
摘要:先推公式,推出个 "这" ,然后因为是 $0/1$ 矩阵,选一个有损耗,两个一组有加成,就想到了最大权闭合子图,(飞行计划问题) cpp include include include include using namespace std; int n, uu, ss, tt, hea[25050
阅读全文
摘要:cpp include include include include using namespace std; int n, m, e, a[305], w[305][305], uu, vv, ww, hea[805], cnt, ss, tt, maxFlow; int lev[805], c
阅读全文
摘要:枚举 $k$,对于每个点 $i$ 我们最多删 $deg_i k$ 条边,就源点向第一部、第二部向汇点连边,容量是 $deg_i k$,原边连上,容量是 $1$,这样每流过一条原边在网络流图中的边时,就代表这条边可以删掉。也即没有流过的边就是 $k$ 时的答案 cpp include include
阅读全文
摘要:分治+最小割 看到题解的第一句话是这个就秒懂了,然后乱七八糟的错误、越界、RE…… cpp include include include include include include using namespace std; int n, m, uu, vv, ww, hea[855], cnt
阅读全文
摘要:跑最大费用最大流,注意到每次 spfa 出来的 cost 一定是越来越少的,啥时小于 $0$ 了就停了吧。 cpp include include include include using namespace std; typedef long long ll; int n, a[205], b[
阅读全文
摘要:给出的图是一个二分图(显然……吗),一个图的最大团=其补图的最大独立集,因此二分图的最大独立集就是补图的最大团。 欲使补图最大团变大,则要最大独立集变大。二分图最大独立集=点数 最小点覆盖。最小点覆盖=最大匹配。 即搞掉哪些边使得最大匹配变小。即二分图的必经边。 二分图的必经边的判断:流量为 $1$
阅读全文
摘要:裸dinic就跑过去了,哪用得着平面图最小割=最短路…… cpp include include include include using namespace std; int n, m, w, ss, tt, hea[1000005], cnt, lev[1000005], cur[100000
阅读全文
摘要:拆点。 cpp include include include include using namespace std; int n, m, hea[2005], cnt, ss, tt, uu, vv, maxFlow, ans, lev[2005]; const int oo=0x3f3f3f3
阅读全文
摘要:二分图的(不)可行边。 cpp include include include include include using namespace std; int n, m, T, ss, tt, hea[20005], cnt, uu[100005], vv[100005], cur[20005],
阅读全文
摘要:```cpp include include include include include using namespace std; int n, m, tu, tv, v, xu[55], yu[55], xv[55], yv[55], hea[2705], cnt, cur[2705]; in
阅读全文
摘要:参考文章 "无源汇有上下界的可行流" "有源汇有上下界的最大流" "有源汇有上下界的最小流" 无源汇有上下界可行流 以 loj115 为例。 剥离出必要边与自由边。 cpp include include include include using namespace std; int n, m,
阅读全文
摘要:前置技能 :HDU3376 Matrix Again 所以看到这个题,我们也会想着用最大费用最大流解决,因为从起点飞到终点再飞回来,就等于从起点飞两次到终点且这两次飞行除了起点终点之外没有访问超过一次的点。 考虑拆点限流,除起点终点以外的点容量是1(花费代表边权),起点终点容量是2。 输出方案的话,
阅读全文
摘要:最大费用最大流 咋写?取个相反数就可以了……
阅读全文
摘要:注意把书拆成两份 cpp include include include include using namespace std; int nb, nc, na, hea[40005], cnt, cur[40005], ss, tt, uu, vv, ww, maxFlow; int lev[40
阅读全文
摘要:神题,还不太清楚 cpp include include include include using namespace std; int n, m, hea[1005], cnt, uu, vv, ww, minCost, pre[1005], dis[1005], ss, tt; const i
阅读全文
摘要:修车加强版 边跑边加,有个师傅做到第 i 个(相对他自己而言),就给他加到 i+1 个。 cpp include include include include using namespace std; int n, m, p, ss, tt, uu, hea[85005], cnt, tim[45
阅读全文
摘要:想象一下,要搞掉一个植物,必须先搞掉另一些植物……我们可以发现这是一个最大权闭合子图的问题。 最大权闭合子图的话,太空飞行计划问题是一个入门题,可以一看。 然而我们手玩一下样例就会惊恐地发现,保护关系 出现了环 。 比如说: 从 i 到 j 的箭头是说要搞 i 就要先搞 j,这是为了和最大权闭合子图
阅读全文
摘要:先做一遍普通的dinic 然后再更改源点为超级源,超级源向原源加一条capacity=k && cost=0的边,再加上有费用的边跑最小费用最大流 cpp include include include include using namespace std; int n, m, k, ss, tt
阅读全文
摘要:把每个点拆成 x y z 对于第 i 个点,x y是表示流入的,y z是表示流出的。 cpp include include include include using namespace std; int n, m, ss, tt, hea[1305], cnt, minCost, pre[130
阅读全文
摘要:对于每个点,把它拆成有权值为1的边相连的两个点,原边是inf。 边的起点统一加n,ss也加n 这就成了最小割 cpp include include include include using namespace std; int n, m, ss, tt, hea[205], cnt, uu, v
阅读全文

浙公网安备 33010602011771号