二分图匈牙利算法
2010-11-06 19:54
218 查看
#include<stdio.h> #include<string.h> int n1,n2,m,ans;//n1代表集合1的顶点个数,n2,m边数,ans最大匹配数 int result[101];//记录V2中的点匹配的点的编号 bool state[101];//记录V2中的每个点是否被搜索过 bool data[101][101];//邻接矩阵 true代表有边相连 void init() { int t1,t2,i; memset(data,false,sizeof(data)); memset(result,0,sizeof(result)); ans=0; scanf("%d %d %d",&n1,&n2,&m); for(i=1;i<=m;i++) { scanf("%d %d",&t1,&t2); data[t1][t2]=true; } return; } bool find_p(int a) { int i; for(i=1;i<=n2;i++) { if(data[a][i]==true && !state[i])//如果节点i与a相邻并且未被查找过 { state[i]=true; if(result[i]==0 || find_p(result[i]))//如果i未在前一个匹配M中 //i在匹配M中,但是从与i相邻的节点出发可以有增广路 { result[i]=a;//记录查找成功记录 return true;//返回查找成功 } } } return false; } int main() { freopen("in.txt","r",stdin); init(); for(int i=1;i<=n1;i++) { memset(state,false,sizeof(state)); if(find_p(i)) ans++; } printf("%d/n",ans); return 0; }
相关文章推荐
- hiho1122_二分图匈牙利算法
- hdu_3605 Escape 二分图的多重匹配 匈牙利算法
- 51Nod 2006 飞行员配对(二分图最大匹配)-匈牙利算法
- 匈牙利算法(求二分图最大匹配的算法)
- 二分图的最大匹配、完美匹配和匈牙利算法
- 二分图最大匹配(匈牙利算法)
- 二分图(bfs+匈牙利算法) POJ 1469 course
- POJ 1469 COURSES(匈牙利算法二分图最大匹配)
- [二分图][匈牙利算法]SSL 1342 Machine Schedules
- poj 2446 二分图最大匹配 匈牙利算法
- Hungary(匈牙利算法)——二分图最大匹配
- NYoj 239 :月老的难题(二分图最大匹配,匈牙利算法)
- 二分图最大匹配之匈牙利算法模板
- Kindergarten(求二分图最大团转化为求补图的最大独立集(再转化为匈牙利算法求最大匹配))
- 二分图最大匹配--匈牙利算法
- nyoj 239 月老的难题 二分图最大匹配(匈牙利算法)
- 二分图最大匹配问题匈牙利算法
- POJ-3041 匈牙利算法 二分图最大匹配
- 二分图最大匹配问题之匈牙利算法
- The Perfect Stall 完美的牛栏 二分图最大匹配,匈牙利算法