随笔分类 - 图论--最大流
摘要:链接题意为去掉多少个顶点使图不连通,求顶点连通度问题。拆点,构造图,对于可以变成 容量为无穷,容量为1.那么求出来的最大流(即最小割)就为所需要删除的顶点个数,需要字典序输出,从小到大枚举顶点,如果不加入当前点,最小割变小了的话 ,说明这个点是肯定要删除的。 1 #include 2 #inc...
阅读全文
摘要:链接最大流=最小割 这题是求割边集 dinic求出残余网络 两边dfs分别以源点d找到可达点 再以汇点进行d找到可达汇点的点 如果u,v为割边 那么s->u可达 v->t可达 并且为饱和边 1 #include 2 #include 3 #include 4 #include 5 ...
阅读全文
摘要:链接二分距离,小于当前距离的边容量+1,使最后流>=t注意 会有重边 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 usi...
阅读全文
摘要:链接floyd求出牛到机器的最短距离,二分距离,小于当前距离的边容量设为1,求出满容量下的最短距离。EK算法 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #includ...
阅读全文
摘要:http://poj.org/problem?id=3686拆点很巧妙 将每个M个点拆成m*n个点 分别表示第i个玩具在第j个机器上倒数第K个处理假设这k个玩具真正用在加工的时间分为a1,a2,a3...ak, 那么每个玩具实际的时间是加工的时间+等待时间,分别为a1, a1+a2, a1+a2+a3.......a1+a2+...ak求和之后变为 a1 *k + a2 * (k - 1) + a3 * (k - 2).... + ak 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define IN.
阅读全文
摘要:http://poj.org/problem?id=2400KM算法http://philoscience.iteye.com/blog/1754498题意:每个雇主对雇员有个满意度 雇员对雇主有个满意度 求最匹配的雇员与雇主最小权匹配 这个给出的数据矩阵貌似是反着的 建图的时候反一下就好了 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define N 110 8 #define INF 0x3f3f3f 9 using namespace std; 10 int w[N][N],...
阅读全文
摘要:http://poj.org/problem?id=3308给两个定义最小割:对于图中的两个点(一般为源点和汇点)来说,如果把图中的一些边去掉,如果它们之间无法连通的话,则这些边组成的集合就叫为割了。如果这些边有权值,最小割就是指权值之和最小的一个割。最大流最小割:应用于网络中,指总流量不超过链路可承载的最大值,且在每条子路径上取尽可能少的流量。对任意一个只有一个源点一个汇点的图来说,从源点到汇点的最大流等于最小割。之前做二分图的时候看过一篇文章 现在依旧看这篇http://ip96cns.blog.163.com/blog/static/170095192201117465473/设置超级源
阅读全文
摘要:http://poj.org/problem?id=3352无向图强连通分量缩点 知道一个等式:若要使得任意一棵树,在增加若干条边后,变成一个双连通图,那么至少增加的边数 =( 这棵树总度数为1的结点数 + 1 )/ 2 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 1010 9 #define M 201010 struct node11 {12 int u,v,next;13 }edge[M];14 stacks;15 int...
阅读全文
摘要:http://poj.org/problem?id=3422最小费用最大流 求的时候把边加为负的 输出的时候再负回来 就变成求的最大费用了拆点 一个点拆为 i i' i->i'连两条边 一条cap为0 cost为给出的值 另一条cap为INF cost为0,i'到右和下分别设置一条边cap为INF cost为0设置超级源点到1节点 cap为K cost为0View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<alg
阅读全文
摘要:http://poj.org/problem?id=2195模板题 超级源点-》men->house->超级汇点 坐标差值为两点的cost值 cap为1View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<queue> 6 #include<stdlib.h> 7 #define INF 0xfffffff 8 using namespace std; 9 s
阅读全文
摘要:http://poj.org/problem?id=2516建图的时候 有个地方写错了 卡了半年。。题意看了N久啊 有N个店主需要K种物品 有M个供应点 每个供应点有K种物品 其实是算K次最小费用 然后叠加 分解开来这题就是求把某种物品从供应点送到店主那里多个源点-》多个汇点 所以加一个超级源点 和 超级汇点 源点->M个供应点->N个店主->汇点 所以共有m+n+2条边 套最小费用模板就行了View Code 1 #include <iostream> 2 #include<cstring> 3 #include<cstdio> 4 #i
阅读全文
摘要:转自pony1993网络流的费用: 在实际应用中,与网络流有关的问题,不仅涉及流量,而且还有费用的因素。网络的每一条边(v,w)除了给定容量cap(v,w)外,还定义了一个单位流量费用cost(v,w)。对于网络中一个给定的流flow,其费用定义为: 最小费用最大流问题 给定网络G,要求G的一个最大用流flow,使流的总费用最小。求解MCMF问题的算法: 在这里各种算法的证明以及原理的详解不再赘述,仅仅介绍算法的过程。相关内容感兴趣的同学可以自己去搜索资料。 最小费用最大流最常用和基本的算法我们可以称它为最小费用路算法,其思想与求最大流的增广路算法类似,不断在残流网络中寻找从源s到汇t的最小费
阅读全文
摘要:http://poj.org/problem?id=3436刚开始做的没拆点 BFS的时候保存了下路径 恰好样例都过了 接着就是各种WA搜了搜解题报告 是将一个电脑拆成2个点 这两点之间限制容量 电脑与电脑之间容量为INF 设置一个源点和汇点 源点全是0 汇点全是1不用保存路径 在最后 比较一下现在的容量和原始容量 差值就为WView Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<queue
阅读全文

浙公网安备 33010602011771号