POJ 1274The Perfect Stall (二分图最大匹配问题,匈牙利算法实现)
2011-03-09 22:14
363 查看
还是牛的问题,用最大流实现过,但当时看到人家匈牙利算法,按照二分图的最大匹配问题处理的,代码好短啊……
所以决心研习下,看了看,其实不复杂,在注释里有解释,看代码吧
所以决心研习下,看了看,其实不复杂,在注释里有解释,看代码吧
#include<iostream> using namespace std; #define N 201 int n,m,map ,match ,vis ; //match[]保存牛栏匹配的牛的编号 void getmap() { int num,x; memset(map,0,sizeof(map)); for(int i=1;i<=n;i++) { scanf("%d",&num); while(num--) { scanf("%d",&x); map[i][x]=1; } } } int dfs(int a) { for(int i=1;i<=m;i++) { if(map[a][i] && !vis[i]) { vis[i]=1; if( match[i]==-1 || dfs(match[i]) ) //第i个栏还没有被占(是空的),或者占据该栏的牛可以找到其他栏 { match[i]=a; return 1; } } } return 0; } int main() { while(~scanf("%d%d",&n,&m)) { getmap(); int cnt=0; memset(match,-1,sizeof(match)); for(int i=1;i<=n;i++) { memset(vis,0,sizeof(vis)); if( dfs(i) ) cnt++; } printf("%d/n",cnt); } return 0; }
相关文章推荐
- 利用匈牙利算法&Hopcroft-Karp算法解决二分图中的最大二分匹配问题 例poj 1469 COURSES
- poj3020 二分图最大匹配(匈牙利算法)
- poj - 3041 Asteroids (二分图最大匹配+匈牙利算法)
- poj 1469 COURSES 二分图最大匹配 匈牙利算法
- poj 3715 Blue and Red(二分图最大匹配匈牙利算法)
- POJ1274 The Perfect Stall [二分图最大匹配 匈牙利算法]
- 二分图相关概念及匈牙利算法求解最大匹配(附代码实现)
- poj2446 Chessboard 二分图最大匹配 思考 匈牙利算法BFS实现
- POJ1274:The Perfect Stall(二分图最大匹配 匈牙利算法)
- poj 3894 System Engineer (二分图最大匹配--匈牙利算法)
- 【二分图最大匹配】【匈牙利算法】poj1469 COURSES && poj2446 Chessboard
- 【学会就脱单算法】匈牙利算法之飞行员配对问题(二分图最大匹配)
- 二分图的最大匹配问题(匈牙利算法)
- 求解二分图的最大匹配的匈牙利算法---POJ 1325 Machine Schedule
- poj3041 最小点覆盖==二分图最大匹配 匈牙利算法求解最大匹配问题(运用DFS)
- POJ 1274 The Perfect Stall (二分图最大匹配入门题,匈牙利算法)
- 二分图的最大匹配问题(匈牙利算法)
- POJ 1469 COURSES(匈牙利算法二分图最大匹配)
- POJ1469[COURSES] 二分图最大匹配 匈牙利算法
- POJ-3041 匈牙利算法 二分图最大匹配