![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最大匹配
yueqiq
这个作者很懒,什么都没留下…
展开
-
poj3041 Asteroids
匈牙利算法模版题,不过,把网格的横纵坐标转化为顶点,(x,y)点则转化为连接x,y的一条边,题目则转化为求图的最小覆盖,而二分图的最小覆盖等于最大匹配,所以套匈牙利算法模版code#include #include #include #include #include #include #include #include #include #include #inc原创 2012-07-30 14:43:35 · 309 阅读 · 0 评论 -
poj3020 Antenna Placement
只能说构图是痛苦的。。。。。完全没思路,思路在下面。。。。无向二分图的最小路径覆盖 = 顶点数 – 最大二分匹配数/2http://user.qzone.qq.com/289065406/blog/1299322779code#include #include #include #include #include #include #include #in原创 2012-07-30 15:36:28 · 309 阅读 · 0 评论 -
Hdu1507 Uncle Tom's Inherited Land*
这个题郁闷了。。。卡了好长时间,不过还好过了。将不相邻的点分为一组,也就是横纵坐标相加为奇数的为一组,另外为一组,然后相邻的在两组中间连一条线,最后求最大匹配code:#include#include#includeusing namespace std;const int dx[]={-1,0,1,0};const int dy[]={0,-1,0,1};struct原创 2012-11-05 21:48:12 · 367 阅读 · 0 评论 -
hdu1608 Girls and Boys
二分图的最大独立点集,在构图的时候因为复制了一遍,所以求出来的最大匹配其实是两倍。code:#include#include#includeusing namespace std;const int MAXN = 1010;int n;bool graph[MAXN][MAXN];bool vis[MAXN];int link[MAXN];int find(int原创 2012-11-06 11:16:22 · 449 阅读 · 0 评论 -
hdu1150 Machine Schedule
将A和B分为2分图的两边,对于每个工作(i,x,y),就在两个点上连一条边,这条边就是工作,这样问题就转化成了用最少的点覆盖所有的边,即二分图的最小点覆盖。code:#include#include#includeusing namespace std;const int MAXN = 110;int n,m,k;bool graph[MAXN][MAXN];bool原创 2012-11-06 12:16:33 · 347 阅读 · 0 评论 -
hdu1498 50 years, 50 colors
很简单的求最小点覆盖、code:#include #include #include #include using namespace std;const int MAXN = 110;int n,k;set col;set::iterator it;int ans[MAXN],cnt;bool graph[MAXN][MAXN];bool vis[MAXN];原创 2012-11-06 18:09:29 · 437 阅读 · 0 评论