2014年04月23日

                                                       我对二分图求最大匹配的体会和理解(基于邻接矩阵和dfs)
  刚刚学会二分匹配,去杭电acm做了到入门的题,给出链接 http://acm.hdu.edu.cn/search.php?action=listproblem
  接下来谈谈我的理解
              由于这道题给的数据特殊,总是从女孩到男孩,所以我大可以开个二维数组map[i][j],表示 从i到j有一个边,将他赋值为1,
  另外我还需要两个标记数组,used[maxn],这个数组用来判断一个点是不是在交替路上,match[maxn],这个数组用来判断从i顶
点到j顶点的边是不是匹配边。
             按照本题的解题思路,在hungarian()函数,也就是匈牙利函数中,我需要去初始化match数组,因为刚开始肯定都不是匹配边。
然后需要遍历所有的女孩(左边集合元素),然后去初始化used数组,接着调用dfs,如果返回成功,匹配边数加1
            然后是关键的dfs函数,这里搜索的路线一定是交替路,遍历所有男孩(右边集合元素),去判断节点是否被访问过而且从i到j是不是有边,
如果是的话,进行相应操作,返回成功,否则返回失败



你可能感兴趣的:(2014年04月23日)