首页 > 编程知识 正文

男女匹配匈牙利算法,匈牙利算法求完美匹配步骤

时间:2023-05-06 02:57:36 阅读:22946 作者:3671

二分图匹配有两个集合a、b

现在,我们发现a的一些元素可以与b的一些元素连接。 同一元素可能可以连接多个元素。

现在需要最大的匹配数。 Ax和Bx的最大对数是多少? )

# include iostream # include cstring # includecstdiousingnamespacestd; 常数上限=1005; int A、b、t; //A中与b中一致的int pre[maxn]; //bi一致的a的元素int flag[maxn]; //标记Bi为int m[maxn][maxn]; //相邻矩阵,a和b哪个为intmatch(intcur )/cur为当前afor(intI=1; i=B; I ()//BIF (遍历m [ cur ] [ I ]! flag[i] ) { //如果可以连接且Bi暂时未连接到flag[i]=true; //暂时if (连接)! pre[I]||match(pre[I] )/Bi未连接或已连接,但可以将连接到bi的分配给另一个pre[i]=cur。 //bi和cur连接到返回真; //cur匹配成功} } }返回假; (}int main ) ) { int i,j; //作图用cin A B; //A和b的数量cin T; //while(t-- ) ) { cin i j; if(I=aj=b ) /确保范围为真的m[i][j]=1; (} int sum=0; for(intI=1; i=B; I ) memset (标志,0,sizeof )标志); sum=match(I; } cout sum endl; 返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。