网络流
qq_38232157
这个作者很懒,什么都没留下…
展开
-
HOJ 3376 Matrix Again(最大费用最大流,拆点建图)
最大费用最大流,拆点建图本题要点:1、 拆点:一共有 n * n 个点, 每个点(i, j)都有一个数值 n * (i - 1) + j定义: 左点位置: n * (i - 1) + j右点位置: n * (i - 1) + j + n * n2、参考老哥的博客建立图:https://blog.csdn.net/chenzhenyu123456/article/details/48009973建立超级源点 s ,超级汇点 t。s 向左上点 (1, 1)的左点建边,容量为2,费用为0;拆点原创 2020-08-26 22:35:58 · 79 阅读 · 0 评论 -
洛谷 P3381 【模板】最小费用最大流(最小费用最大流,模板题)
最小费用最大流,模板题本题要点:1、最小费用最大流概念:取得最大流的流法有很多,要求是费用最小的那种走法。2、每一条边多了一个花费,表示单位流量需要多少钱。在添加反向边的时候,反向的花费应该是正向边花费的 相反数。3、使用 spfa 来寻找每一条, 从 s到达 t路径的花费最少的路径。相当于在裸的 EK 算法中, 用 spfa 来替换 bfs();这里的数组 dist[i] 表示从 源点 s 到点i的 最少的花费。#include <cstdio>#include <c原创 2020-08-26 16:47:47 · 145 阅读 · 0 评论 -
洛谷 P2756 飞行员配对方案问题(最大流求二分图最大匹配)
最大流求二分图最大匹配本题要点:1、二分图模型,转换为最大流模型增加一个源点s和汇点t, 源点s和n个左部节点连线,边的容量是1,m个右部节点和汇点t连线, 边的容量是1。然后求该网络图从s到t的最大流,就是原图的二分图最大匹配2、这里要求输出这 k 对的最大匹配。用数组 ans存放,ans[i] 表示点i的下一个节点是哪个节点。在update函数里,更新 ans 数组即可。#include <cstdio>#include <cstring>#include原创 2020-08-25 22:24:34 · 100 阅读 · 0 评论 -
HOJ 3549 Flow Problem(最大流,裸题)
最大流,裸题题目意思:给你一个N个顶点M条边的有向图,要你求1号点到N号点的最大流.本题要点:1、套用 RK 算法模板#include <cstdio>#include <cstring>#include <iostream>#include <queue>#include <algorithm>using namespace std;const int MaxN = 210, MaxM = 2010;const int i原创 2020-08-25 19:33:23 · 110 阅读 · 0 评论 -
POJ 3469 Dual Core CPU(最小割,建图)
最大流dinic算法,建图题目意思:双核计算机A,B,有n个模块,每个模块都要再CPU中运行,并且知道了每个模块在每个CPU上的运行时间,如果它们运行在同一个cpu,就可以忽略共享数据的花费,否则需要额外的费用,求完成所有任务的最小花费;本题要点:1、最大流量=最小割容量2、建图建图:让两个CPU分别为图的源点s和汇点t,已知每个模块与两个CPU的运行时间Ai,Bi,则对于每个模块,从s连向一条容量为Ai的边到这个模块,在从这个模块连一条容量为Bi的边到t;对于在不同模块运行的模块需要额外的原创 2020-08-25 19:26:28 · 151 阅读 · 0 评论 -
HOJ 1532 Drainage Ditches(最大流EK算法,裸题)
最大流EK算法,裸题本题要点:1、EK算法的步骤:先用 bfs,判断图中知否存在一条增光路;存在增光路,那么每次更新这条增光路;2、更新增光路:pre[i] 表示增光路上,i点的前一个点的下标incf[i], 表示起点s 到达点i的增光路上各边的最小剩余容量。因此,增光路上的每一条边都应该减去 incf[t]#include #include #include #include #include using namespace std;const int MaxN = 210,原创 2020-08-25 18:39:49 · 107 阅读 · 0 评论 -
洛谷 P3376 【模板】网络最大流(最大流dinic算法,模板题)
最大流dinic算法,模板题EK算法,每次调用一次 bfs,只能找到一条 增光路。dinic算法每调用一次 bfs, 就可以找到多条的增光路。本题要点:1、dinic 步骤a) 用bfs建立分层图, 实际是一个增广网b) 建立一个分层图后,再 dfs 在增广网,计算所有可能的增广路上的流量的总和.2、dinic 算法的剪枝:当前弧优化:now 数组,记录每个点将要访问的第一条边。在bfs建立分层图的时候,某个点 x 第一次入队列, now[x] = head[x]。在 dfs 的过程中,原创 2020-08-25 18:20:31 · 303 阅读 · 0 评论