二分图的最佳匹配
the_conquer_zzy
计算机科学与技术专业
展开
-
hdu 1068 Girls and Boys
这道题和hdu 1054同样是二分图匹配相关的问题。 二分图 最大匹配数=最小点覆盖数。DAG 最小路径覆盖=顶点数-最大匹配数最大独立集=顶点数-最大匹配数。当一个图是无向图时,需要从每一个顶点进行最大匹配查找,所以无向图的最大匹配数是求出的最大匹配数/2; 或者可以理解为: 当图是无向图时, 左边的集合是包含了所有的顶点, 是有向图时,只包含了一部分顶点。匈牙利算法: vector<i原创 2017-07-17 13:51:49 · 207 阅读 · 0 评论 -
二分图 hdu 1054 Strategic Game
这是个最小点覆盖问题,而最小点覆盖问题=二分图最大匹配数匈牙利算法是计算二分图最大匹配的算法:其dfs实现版本如下bool dfs(int v){ for(vector<int>::iterator it=tree[v].begin();it!=tree[v].end();it++){ int w=*it; //for if(!visited[原创 2017-07-13 22:54:22 · 208 阅读 · 0 评论 -
hdu 1084 course
完美匹配题 完美匹配肯定是最大匹配,根据题意,应该是每个学生匹配到一门课。 所以学生作为左边集合。最大匹配=最小点覆盖。 最小路径覆盖=顶点数-最大匹配数 算法匈牙利算法:bool dfs(int i){ int n=stu[i].size(); for(int j=0;j<n;j++){ if(visited[stu[i][j]]) continue;原创 2017-07-25 10:53:02 · 234 阅读 · 0 评论 -
hdu 1150 Machine Schedule
中心思想 转化为二分图最小顶点覆盖问题。二分图最小顶点覆盖数=二分图最大匹配数那么二分图到底是哪两部分呢? 一部分是机器A ,一部分是机器B, 如果某个任务,可由 A 的Xi 和 B 的 Yi模式完成。则在Xi 和 Yi之间连一条线,有向图,A—>B 。 所以 二分图左部分集合就是机器A的模式的集合,右部分是机器B模式集合。模式从1 开始,排除模式为0的元素。详细参考博客:二分图最原创 2017-08-09 18:03:18 · 190 阅读 · 0 评论 -
hdu 1151 Air Raid
主题思想: DAG 有向无环图,最少路径覆盖本质二分图最大匹配问题二分图最大匹配数=最小点覆盖数DAG最少路径覆盖数=DAG顶点数-二分图最大匹配数。特别的 无向图的最大匹配数需要除以2。且顶点是全体。AC代码:#include <iostream>#include<cstring>#include<cstdio>#include<vector>using namespace std原创 2017-08-09 20:25:54 · 169 阅读 · 0 评论 -
hdu 1179
二分图最大匹配AC 代码#include <iostream>#include<cstdio>#include<vector>#include<cstring>using namespace std;const int maxn=105;bool visited[maxn];int matched[maxn];vector<int> wizard[maxn]; int n,m;bool d原创 2017-08-17 22:31:18 · 184 阅读 · 0 评论 -
hdu 1281 棋盘游戏
主题思想: 匈牙利算法,最小点覆盖=二分图最大匹配数, 求最大匹配。 但是怎么就能看出来是最大匹配数呢? 分析下思考过程,一行一列至多有一个棋子车, 抽象出来就是每一行对于多列只能匹配一列,只能有一个车,就是说,行坐标是一部分,列坐标是一部分, 分别把行,和列作为二分图的两部分。就能求出最多能放多少个车。对于重要点,采取遍历去除的方法,如果取消掉某个点,最大匹配少了,该点就是重要点。匈牙利算法模原创 2017-09-26 21:21:10 · 156 阅读 · 0 评论