匈牙利算法
2013-07-29 20:21
176 查看
二分图匹配的算法,二分图就是把图上的点分成两个互不相交的点集,而图中的边的端点只能分别属于这两个点集.
二分图的匹配,就是婚配问题,左边的点集男性,右边的点集女性,然后相互配对(一夫一妻);最大匹配就是让好事最多.
匈牙利算法可以实现这个东西.
匈牙利算法怎么实现的这个东西.这个比较多.代码如下:
二分图的匹配,就是婚配问题,左边的点集男性,右边的点集女性,然后相互配对(一夫一妻);最大匹配就是让好事最多.
匈牙利算法可以实现这个东西.
匈牙利算法怎么实现的这个东西.这个比较多.代码如下:
#include <iostream> #include <string.h> #include <cstdio> #define MAX 100 using namespace std; int n, m; int ans; bool vis[MAX]; int use[MAX]; bool c[MAX][MAX]; void init() { int x, y; cin >> n >> m; for (int i = 0; i < m; i++) { cin >> x >> y; c[x][y] = true; } } bool dfs(int x) { for (int i = 1; i <= n; i++) { if (c[x][i] && !vis[i]) { vis[i] = true; if (!use[i] || dfs(i)) { use[i] = x; return true; } } } return false; } void solve() { for (int i = 1; i <= n; i++) { memset(vis, false, sizeof(vis)); dfs(i); } } void out() { for (int i = 1; i <= n; i++) { if (use[i]) { ans++; } } cout << ans << endl; for (int i = 1; i <= n; i++) { if (use[i]) { cout << use[i] << ' ' << i << endl; } } } int main() { init(); solve(); out(); return 0; }
相关文章推荐
- nyoj 239 月老的难题【匈牙利算法+邻接表】
- POJ 3041 Asteroids 匈牙利算法模板题
- hdu 2063 过山车(匈牙利算法模板)
- poj 3715 Blue and Red(二分图最大匹配匈牙利算法)
- [算法] poj 1274 The Perfect Stall (匈牙利)
- 杭电1150 Machine Schedule(匈牙利算法模板)
- 二分图匹配学习——匈牙利算法模板
- hdu 2063 过山车 二分图的最大匹配 匈牙利算法
- poj3041 最小点覆盖即最大匹配(匈牙利算法)(模板)
- 二分图最大匹配——匈牙利算法
- 匈牙利算法解决指派问题清晰流程
- poj 1325 Machine Schedule(最大匹配,匈牙利算法)
- 二分图的最大匹配、完美匹配和匈牙利算法
- 匈牙利算法
- 匈牙利算法
- POJ1274(匈牙利算法)
- Matrix Gym - 100741F 匈牙利算法(最大二分图匹配)
- POJ 2536 匈牙利算法
- POJ3041——Asteroids(匈牙利算法)
- 匈牙利算法