匈牙利算法的理解。

 

觉得这个说法比较好理解,恩。。图的编号自己理解吧。

 

 

 

 

然后就是实现了,代码:

 

int Augement(int n,int x) // n是图节点数的上界 { int i; for(i=1; i<=n; i++) // 寻找增广路 if( !used[i] && map[x][i] ) { used[i] = 1; if( match[i] == 0 || Augement(n,match[i]) ) // 如果被标记了,就找被标记点是否可以增广 { match[i] = x; return 1; } } return 0; } int Hungary(int n) { int i,sum = 0; memset(match,0,sizeof(match)); for(i=1; i<=n; i++) // 对每个点进行增广 { memset(used,0,sizeof(used)); if( Augement(n,i) ) sum++; } return sum; } 

你可能感兴趣的:(知识就是力量!,网络流,二分图匹配)