Bipartite graph
文章平均质量分 67
wust_tanyao
这个作者很懒,什么都没留下…
展开
-
hdu1054 Strategic Game---二分图匹配
匈牙利算法模板。。 /* ************************************************************************** //二分图匹配(匈牙利算法的DFS实现) //初始化:g[][]两边顶点的划分情况 //建立g[i][j]表示i->j的有向边就可以了,是左边向右边的匹配 //g没有边相连则初始化为0 //uN是匹配左边的顶点数原创 2013-12-01 20:24:43 · 960 阅读 · 0 评论 -
hdu2819 Swap
#include #include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f #pragma comment(linker, "/STACK:16777216") #define eps 1e-6 #define ll long l原创 2014-08-11 17:00:28 · 602 阅读 · 0 评论 -
hdu4185 Oil Skimming
要用1×2的板子尽量多的覆盖##区域,且不能交叉,求至多可以覆盖多少板子。 每一个#向向下或向右相邻的#建边。求最大匹配就可以了。 其实这题数据是比较弱的把,应该是#的个数在600以内把。。 #include #include #include #include #include #include #include #include #include #原创 2014-08-18 13:58:17 · 717 阅读 · 0 评论 -
poj3308 Paratroopers --- 最小点权覆盖->最小割
题目是一个很明显的二分图带权匹配模型, 添加源点到nx建边,ny到汇点建边,(nx,ny)=inf建边,求最小割既得最小点权覆盖。 在本题中由于求的是乘积,所以先全部取log转换为加法,最后再乘方回来。 #include #include #include #include #include #include #include #include #include原创 2014-07-31 08:05:49 · 800 阅读 · 0 评论 -
hdu3861 The King’s Problem --- 强连通+二分图
给一个n个点的有向图,要把n个点分成尽量少的部分,使每个部分里的任意两点间两两可达,而且强连通分量必须在一个部分里。 缩点后建新图,二分图最小路径覆盖。 #include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f #def原创 2014-08-03 17:00:51 · 569 阅读 · 0 评论 -
hdu1845 Jimmy’s Assignment --- 完备匹配
题意: 要求在一个特殊的图上找最大匹配,该图特点是:无向图,每个节点度数为3,是一个边双连通分量(the graph is 2-edge-connected (that is, at least 2 edges need to be removed in order to make the graph disconnected) 这一点是这样理解的把。。) 思路: 一般想法就直接建图求最大匹原创 2014-07-23 09:45:31 · 1305 阅读 · 0 评论 -
poj2239 Selecting Courses --- 二分图最大匹配
匈牙利算法模板题 有n门课程,每门课程可能有不同时间,不同时间的课程等价。 问不冲突的情况下最多能选多少门课。 建立二分图,一边顶点表示不同课程,另一边表示课程的时间(hash一下)。 #include #include #include #include #include #include #include #include #include #defi原创 2014-07-01 16:52:00 · 636 阅读 · 0 评论 -
hdu1281 棋盘游戏 --- 最大匹配
给一个矩形棋盘,上面有一些空格点,可以放象棋中的“车”, 现给出空格的坐标,求最多可以放多少个“车”使他们互不攻击(根据象棋规则,每行每列至多只能放一个), 还要求有几个“车”是必须选择的。 因为每行每列只能放一个,所以不能有冲突的x或y坐标,既把x和y分为二分图的两个集合,要求最大匹配。 至于有多少个必须选择的,我们可以枚举最大匹配中的每个匹配,(一个匹配相当于一个坐标嘛),去掉原创 2014-07-22 10:21:36 · 667 阅读 · 0 评论 -
hdu1498 50 years, 50 colors --- 最小点覆盖
给一个矩阵,里面有一些不同颜色的气球,每次可以消灭一行或一列中某一种颜色的气球,问你在k次及以内,有哪些颜色的气球是无论如何也消不完的。 那么思路就是,对每一种颜色的气球求最小点覆盖,>k 则为答案。 相当于 poj3041 的加强版,因为矩阵中不是每一个点都是等价的。 #include #include #include #include #include #inclu原创 2014-07-22 08:36:44 · 615 阅读 · 0 评论 -
poj3041 Asteroids --- 最小点覆盖
#include #include #include #include #include #include #include const int maxn=510; using namespace std; int my[maxn],mx[maxn],vis[maxn],e[maxn][maxn],n; int path(int i) { int j; for(j=1;j<=n原创 2014-07-21 21:00:33 · 864 阅读 · 0 评论 -
hdu1068 Girls and Boys --- 最大独立集
有一个集合男和一个集合女,给出两集合间一些一一对应关系,问该两集合中的最大独立集的点数。 最大独立集=顶点总数-最大匹配数 此题中,若(a,b)有关,则(b,a)有关,每一个关系算了两次,相当于二分图的两边集合没有分男女,两边都是总人数, 所以此题中答案应该是 顶点总数-最大匹配数/2 #include #include #include #include #include #原创 2014-07-22 08:22:47 · 1179 阅读 · 0 评论 -
二分图的性质
二分图中,点覆盖数是匹配数。 (1) 二分图的最大匹配数 = 最小点覆盖数 即求最少的点使得每条边都至少和其中的一个点相关联,很显然直接取最大匹配的一段节点即可。 (2) 二分图的独立数 = 顶点数 - 最大匹配数 很显然的把最大匹配两端的点都从顶点集中去掉这个时候剩余的点是独立集,这是|V|-2*|M|,同时必然可以从每条匹配边的原创 2014-07-21 10:15:14 · 951 阅读 · 0 评论 -
poj1325 Machine Schedule
有nx种A类机器,有ny种B类机器,k个东西,每个东西可以在a或b启动时生产(a属于A,b属于B),初始状态AB均在0, 每次切换需要重启,要生产全部k种东西,问至少重启几次。 将每件东西a,b建边,则每条边至少需要一个点才能完成该边代表的东西,题目等价于最小点覆盖问题,既用最少的点覆盖所有的边, 根据二分图性质,最小点覆盖数=最大匹配数 #include #inclu原创 2014-07-21 10:44:56 · 756 阅读 · 0 评论 -
二分图大讲堂——彻底搞定最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖、带权最优匹配
文本内容框架: §1图论点、边集和二分图的相关概念和性质 §2二分图最大匹配求解 匈牙利算法、Hopcroft-Karp算法 §3二分图最小覆盖集和最大独立集的构造 §4二分图最小路径覆盖求解 §5二分图带权最优匹配求解 Kuhn-Munkers算法 §6小结 每章节都详细地讲解了问题介绍,算法原理和分析,算法流程,算法实现四部分内容,力求彻底解决问题。 §1图论点、边集转载 2014-07-21 09:57:07 · 791 阅读 · 0 评论 -
hdu1151 Air Raid --- 最小路径覆盖
给一个DAG图,一个人可以走一条路,或者就在一个点(路径长度为0),问至少需要多少人可以覆盖所有点。 根据二分图的性质: DAG的最小路径覆盖,将每个点拆点后求最大匹配数m,结果为n-m,求具体路径的时候顺着匹配边走就可以,匹配边i→j',j→k',k→l'....构成一条有向路径。 #include #include #include #include #include #原创 2014-07-21 10:48:48 · 618 阅读 · 0 评论 -
poj3189 Steady Cow Assignment --- 多重匹配,二分图匹配解法
有n头牛,m个牛棚,每头牛对牛棚的满意程度有一个排序,每个牛棚有牛数限制。 问如何分配各个牛,使得所有牛的满意程度的差值最小。 这题首先可以想到二分答案,对于每一种差值来求是否可行。 不想再搞网络流,学习了下二分图匈牙利解法。。 匹配时,对于每一种选择(牛棚),若满足范围,且有多余的容量,则匹配; 否则,对于该牛棚已经匹配过的牛进行增广。 #include原创 2014-09-25 12:47:57 · 894 阅读 · 0 评论