
匈牙利算法
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 · 329 阅读 · 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 · 322 阅读 · 0 评论 -
poj1281 棋盘游戏
这题应该算是一道比较简单的二分图问题,可是我压根还是没想到二分图,一看解题报告说用二分图,再一琢磨就明白了。。。。就是求二分图的最大匹配和关键匹配code:#include #include using namespace std;int n,m,k;int link[101];bool graph[101][101],vis[101];struct pos{ i原创 2012-09-23 22:41:38 · 655 阅读 · 1 评论 -
Hdu1151 Air Raid
求最小路径覆盖Orzcode:#include#include#includeusing namespace std;int n,m,link[125];bool map[125][125],vis[125];bool find(int x){ int y; for(y=1;y<=n;y++) { if(map[x][y] && !原创 2012-11-05 14:09:22 · 449 阅读 · 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 · 383 阅读 · 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 · 468 阅读 · 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 · 364 阅读 · 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 · 447 阅读 · 0 评论