二分图
文章平均质量分 73
wuhulala
这个作者很懒,什么都没留下…
展开
-
poj 3692Kindergarten(二分匹配模板)
题意:有n个男生和m个女生,每个男生都认识和每个女生都认识,还有k对关系中的男生和女生都认识,老师想从中选择最大的人数并且这些人都认识 思路:显然这道题可以吧男生看为一个集合,女生为一个集合,然后可以看出,如果把每对认识的连线,然后剩下的都是不认识,那么补图明显是二分图,所以可以有最大团的知识得出 最大团=原图节点数-补图的最大二分匹配数 G的最大团指的是顶点数最多的一个团。 具 体原创 2015-07-19 13:55:11 · 751 阅读 · 0 评论 -
poj 3041 Asteroids
题意:n*n的格子里面有k个小行星,每一能消除一行或一列,那么最小消除多少次可以把全部消除掉 思路:把行和列连到一起,可以构成一个二分图,那么只需要求最大匹配数即为所求 #include #include #include using namespace std; const int N=1001; int n1,n2,k; int mp[N][N],vis[N],lin原创 2015-07-19 14:31:33 · 622 阅读 · 0 评论 -
图论的些许关系
定义 匹配: 给定一个二分图,在G的一个子图G’中,如果G’的边集中的任意两条边都不依附于同一个顶点,则称G’的边集为G的一个匹配 最大匹配: 在所有的匹配中,边数最多的那个匹配就是二分图的最大匹配了 顶点覆盖: 在顶点集合中,选取一部分顶点,这些顶点能够把所有的边都覆盖了。这些点就是顶点覆盖集 最小顶点覆盖: 在所有的顶点覆盖集中,顶点数最小的原创 2015-07-19 15:16:12 · 927 阅读 · 0 评论 -
URAL - 1721 Two Sides of the Same Coin
题意:给出n个人的信息,名字、特征、排名。在排名相差2的前提下,特征为testdata可以与特征为statements的组队,特征为anything可以任何一人组队; 求最多匹配对数,并将每队名字输出; 思路:构建一个二分图。ok #include #include #include using namespace std; #define N 1111 int原创 2015-07-20 10:13:02 · 718 阅读 · 0 评论 -
UVA - 11419 SAM I AM
和击毁小行星的那道题是一样的,只不过这道题要输出路径。 最小点覆盖 = 最大匹配数 求一个最小覆盖点集 #include #include #include using namespace std; const int N=1111; int n1,n2,k; int mp[N][N],vis[N],link[N]; int vis2[N]; int v[N]; int原创 2015-07-20 10:29:57 · 544 阅读 · 0 评论 -
hdu5285 wyh2000 and pupil
对图染色,如果相邻的边染色一样,那么说明错误,输出那个不可能的字符串 否则输出最大的那组人数个最小的那组人数 特判:m ==0 和 最大那组人数为 n的时候 注意:杭电后台使用的是windows,会爆栈 最好用一下:#pragma comment(linker, "/STACK:1024000000,1024000000") 具体解释请看这篇文章 http://bbs.b原创 2015-07-19 20:07:04 · 760 阅读 · 0 评论 -
最小覆盖点集模板
#include #include #include using namespace std; const int N=1111; int n1,n2,k; int mp[N][N],vis[N],link[N]; int vis2[N]; int v[N]; int dfs(int x) { int i; vis2[x]=1; for(i=1; i<=n2原创 2015-07-20 12:12:19 · 1114 阅读 · 0 评论 -
二分图最大匹配的König定理及其证明
二分图最大匹配的König定理及其证明本文将是这一系列里最短的一篇,因为我只打算把König定理证了,其它的废话一概没有。 以下五个问题我可能会在以后的文章里说,如果你现在很想知道的话,网上去找找答案: 1. 什么是二分图; 2. 什么是二分图的匹配; 3. 什么是匈牙利算法;(http://www.matrix67.com/blog/article.asp?id=41) 4. König定理证到了转载 2015-07-20 12:08:40 · 518 阅读 · 0 评论