码迷,mamicode.com
首页 > 编程语言 > 详细

二分图匹配的匈牙利算法

时间:2014-11-30 15:17:26      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:blog   ar   sp   for   div   log   bs   ad   as   

匈牙利算法,很绕,其实写起来也就一点点长度。。

bool find(int a){
	int i,j;
	for(i=head[a];i;i=next[i]){
		j=to[i];
		//获得相邻的点
		if(!unable[j]){//如果这个点可以被匹配(前一次匹配到这点时被重新分配过)
			unable[j]=true;//假设这次不能匹配
			if(!ub[j] || find(ub[j])){//如果可以匹配
				ub[j]=a;//设值
				unable[j]=false;//下一次可以
				return true;//可以
			}
		}
	}
	return false;//不能
}
int hungary(int n){
	int res=0;
	for(i=0;i<n;++i){
		memset(unable,sizeof unable,0);//这是必须的
		if(find(i)) ++res;//如果可以找到匹配
	}
	return res;
}

 

二分图匹配的匈牙利算法

标签:blog   ar   sp   for   div   log   bs   ad   as   

原文地址:http://www.cnblogs.com/tmzbot/p/4133060.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!