![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分匹配
文章平均质量分 81
紫杉丶
这个作者很懒,什么都没留下…
展开
-
HDU 1281 棋盘游戏
将行与列构成二分图 重要点就是每次去除一个点,然后再找最大匹配 如果小于原来的最大匹配 说明该点为重要点 #include #include #include #include #include using namespace std; #define mod 100000007 typedef long long LL; const int M = 310; int mp[105][105原创 2015-07-12 10:16:27 · 291 阅读 · 0 评论 -
HDU 2444 The Accomodation of Students
典型的二分图匹配,首先要判断是否为二分图 用染色法, 然后就是匈牙利算法。 #include #include #include #include using namespace std; typedef long long LL; const int M = 210; struct node { int from,to,next; } edge[210*210]; int原创 2015-07-06 15:49:57 · 284 阅读 · 0 评论 -
HDU 5285 wyh2000 and pupil
用染色法判断一下就好,不认识的人不同的颜色即不同分组,人数最多的一组在前 #include #include #include using namespace std; typedef long long LL; int edgenum; int n,m; int flag; int color[100010]; int colornum[2]; int head[100010]; int v原创 2015-07-19 08:46:41 · 679 阅读 · 0 评论 -
HDU 2255 奔小康赚大钱 (KM算法)
直接输入w[i][j]边权值建图套模板就可以了 //#pragma comment(linker, "/STACK:102400000,102400000") #include #include #include #include #include using namespace std; typedef long long LL; const long long mod = 1e9原创 2015-08-12 20:20:16 · 330 阅读 · 0 评论 -
HDU 2853 Assignment (KM算法)
来自网上的巧妙思路: 因为我们要变动最小,所以对在原计划中的边要有一些特殊照顾,使得最优匹配时,尽量优先使用原计划的边,这样变化才能是最小的且不会影响原匹配。 根据这个思想,我们可以把每条边的权值扩大k倍,k要大于n。然后对原计划的边都+1。精华全在这里。我们来详细说明一下。 全部边都扩大了k倍,而且k比n大,这样,我们求出的最优匹配就是k倍的最大权值,只要除以k就可以得到最大权值。实现原计原创 2015-08-13 22:16:21 · 345 阅读 · 0 评论 -
POJ 3020 Antenna Placement (Hungary)
求最小覆盖边, 无向二分图的最小路径覆盖 = 顶点数 – 最大二分匹配数/2 由于构图过程中匹配双向的,所以匹配数多了一倍,最后要/2 构图可以用奇偶,或者用数来标记 //#pragma comment(linker, "/STACK:102400000,102400000") #include #include #include #include #include usi原创 2015-08-15 10:08:30 · 414 阅读 · 0 评论