二部图-匈牙利算法实现
来源:互联网 发布:js设置button颜色 编辑:程序博客网 时间:2024/04/28 09:02
- 两篇参考网址
- http://blog.csdn.net/dark_scope/article/details/8880547 相亲举例
- http://m.blog.csdn.net/blog/fyxz1314/37651567 偏公式
- 增广路径:非匹配边->匹配边->非匹配边组成的路径
- 递归:将之前匹配边的女生赋给新的男生,之前匹配边的男生重新找到心仪的女生,如此递归。
#include <iostream>#include <fstream>using namespace std;#define MAXN 100int m,n; // 男女生数目bool edge[MAXN][MAXN]; // 男生是否心仪某女生int link[MAXN]; // 右边的点和左边哪个点陪陪bool visit[MAXN]; // 该女生是否被访问过bool find_path(int u){for (int v = 1; v <= n; ++v) // 遍历右边顶点{if (edge[u][v] && !visit[v]){visit[v] = true;if (!link[v] || find_path(link[v])) // 右边顶点还没有匹配,或已经匹配的左边顶点可以去寻找另一个右边顶点,而把该右边顶点让给当前左边顶点{link[v] = u; // 这就相当于加一个匹配边了return true;}}}return false;}// 返回匹配边数目int hungary(){int ans = 0;memset(link, 0, sizeof(link));for (int u = 1; u <= m; ++u) // 遍历左边男生{memset(visit, false, sizeof(visit));if (find_path(u)) // 发现有增广路径++ans;}return ans;}int main(){memset(edge, false, sizeof(edge));ifstream in("data.txt");in >> m >> n;int a,b;while (in >> a >> b){edge[a][b] = true;}in.close();cout << "最大匹配数:"<< hungary() << endl;return 0;}
0 0
- 二部图-匈牙利算法实现
- 二部图 匈牙利算法
- 二部图最大匹配--匈牙利算法
- 匈牙利算法 DFS 二部图的最大匹配
- 图的应用--二部图的判定及利用匈牙利算法求二部图的最大匹配
- 【图论】匈牙利算法与KM算法(寻找二部图最佳匹配与最佳完备匹配)
- poj 1325 Machine Schedule(二部图最小点覆盖集 最大匹配 匈牙利算法)(简单)
- (NYoj 237)游戏高手的烦恼 --二部图最大匹配,匈牙利算法
- (HDU 5727)Necklace <二部图匹配,匈牙利算法> 多校训练1
- 匈牙利算法(C#)实现
- 有关二部图KM算法的讨论
- POJ 2446 : Chessboard(二部图算法)
- 二部图实现的简单例子源码
- 二部图
- 匈牙利算法的MatLab实现
- 匈牙利算法的实现步骤
- 匈牙利算法的C++实现
- 匈牙利算法的一个实现
- Java javapractices (1) - Avoid basic style errors
- Reverse bits leetcode190
- LINUX网络工具
- CSDN博客初写
- 卡片式提醒在让座援助事件中的应用
- 二部图-匈牙利算法实现
- 【C++进阶】for循环以及for循环运行机制
- web项目xml配置文件获取数据 和TDES 加码
- 5.9android中的异步任务
- Linux中建立新的进程,父进程等待子进程的退出
- Spring工作原理分析
- Win32 LoadLibrary 失败的2种可能原因
- Spring batch笔记
- CSS+DIV 设计的页面,在除了chrome、360浏览器外, 没有滚动条 不能下拉