
二分图匹配
文章平均质量分 72
蘑菇小哲
在通往梦想的道路上奋力潜行
展开
-
HDU 1150 Machine Schedule(二分图匹配)
解题思路:本题要求的为最小点覆盖,最小点覆盖 == 最大匹配,要注意初始为模式0,没有消耗,所以模式0不需要连边。#include #include #include #include #include #include #include #include #include #define LL long long#define FOR(i, x, y) for(int原创 2015-04-01 22:52:04 · 547 阅读 · 0 评论 -
HDU 2444 The Accomodation of Students(dfs + 匈牙利算法)
题目大意: 有n个学生,有m对人是认识的,每一对认识的人能分到一间房,问能否把n个学生分成两部分,每部分内的学生互不认识,而两部分之间的学生认识。如果可以分成两部分,就算出房间最多需要多少间,否则就输出No。解题思路:先是要判断是否为二部图,然后求最大匹配。 #include #include #include #include #include原创 2015-03-29 16:39:20 · 628 阅读 · 0 评论 -
HDU 4185 Oil Skimming(离散化 + 二分图匹配)
#include #include #include #include #include #include #include #include #include #define LL long long#define FOR(i, x, y) for(int i=x;i<=y;i++)using namespace std;const int MAXN = 600 + 10原创 2015-03-30 16:10:48 · 726 阅读 · 0 评论 -
HDU 3020 Antenna Placement(二分图匹配)
解题思路:相邻的城市连边。#include #include #include #include #include #include #include #include #include #define LL long long#define FOR(i, x, y) for(int i=x;i<=y;i++)using namespace std;const in原创 2015-03-31 11:51:51 · 725 阅读 · 0 评论 -
HDU 1274 The Perfect Stall(二分图匹配)
模版题,wa了一次因为忘记每次都初始化vis数组了。#include #include #include #include #include #define LL long long#define FOR(i, x, y) for(int i=x;i<=y;i++)using namespace std;const int MAXN = 200 + 10;int G[原创 2015-03-31 17:13:36 · 461 阅读 · 0 评论 -
HDU 1083 Coures(二分图匹配)
解题思路:裸的匈牙利算法,看最大匹配是否等于P;#include #include #include #include #include #include using namespace std;const int MAXN = 500;int p, n;int G[MAXN][MAXN];int match[MAXN];int vis[MAXN];int path原创 2015-03-30 09:50:54 · 615 阅读 · 0 评论 -
HDU 1281 棋盘游戏(二分图匹配)
解题思路:枚举棋盘上所有格子,如果讲该点删除后,最大匹配数会减少,则该点为关键点。#include #include #include #include #include #include using namespace std;const int MAXN = 100 + 10;int G[MAXN][MAXN];int vis[MAXN];int match[MAX原创 2015-03-30 10:12:20 · 619 阅读 · 0 评论 -
HDU 2819 swap(二分图匹配并记录路径)
#include #include #include #include #include #include #define LL long longusing namespace std;const int MAXN = 100 + 10;int G[MAXN][MAXN];int vis[MAXN];int match[MAXN];int N;int path(int原创 2015-03-30 11:36:16 · 468 阅读 · 0 评论 -
HDU 2255 奔小康,赚大钱(KM算法模版)
解题思路:二分图带权匹配,卡费用流,用KM算法。#include #include #include #include using namespace std;/* KM算法 * 复杂度O(nx*nx*ny) * 求最大权匹配 * 若求最小权匹配,可将权值取相反数,结果取相反数 * 点的编号从0开始 */const int MAXN = 310;co原创 2015-04-02 12:06:10 · 814 阅读 · 0 评论 -
HDU 2389 Rain on your Parade(H-C算法,二分图匹配)
解题思路:比较适合大数据的二分图匹配,用匈牙利算法会超时#include #include #include #include #include using namespace std;const int MAXN = 3000 + 10;const int INF=1<<28;/***********************************************原创 2015-04-02 23:35:46 · 494 阅读 · 0 评论 -
二分图匹配总结
1.一个二分图中的最大匹配数等于这个图中的最小点覆盖数König定理是一个二分图中很重要的定理,它的意思是,一个二分图中的最大匹配数等于这个图中的最小点覆盖数。如果你还不知道什么是最小点覆盖,我也在这里说一下:假如选了一个点就相当于覆盖了以它为端点的所有边,你需要选择最少的点来覆盖所有的边。2。最小路径覆盖=最小路径覆盖=|G|-最大匹配数 在一个N*N的有向图中,路径覆盖就是在图原创 2015-04-02 23:04:58 · 689 阅读 · 0 评论 -
HDU 4619 Warm up 2(点独立集)
#include #include #include #include #include #include #include #include #include #define LL long long#define FOR(i, x, y) for(int i=x;i<=y;i++)using namespace std;const int MAXN = 2000 + 1原创 2015-04-02 19:11:56 · 412 阅读 · 0 评论 -
ZOJ 3460 Missile(二分+ 二分图匹配)
解题思路:把每一个可发射导弹的时间看成一个发射装置,总共n * m个,然后二分答案#include #include #include #include #include #include #include #include #include #include #include #include #define LL long long#define FOR(i, x原创 2015-04-03 11:55:00 · 501 阅读 · 0 评论