【二分匹配】【匈牙利算法即由增广路求最大匹配模板】
来源:互联网 发布:淘宝卖家发快递价格 编辑:程序博客网 时间:2024/06/05 07:31
基本思想:先初始化匹配M为空,找到图中的一条相对于M的增广路P。对P上的路径取反,更新M,。再次寻找增广路,若不存在增广路算法结束。(有一点点稍微难理解,自己手动模拟一下这个过程就知道啦)
#include<stdio.h>#include<string.h>#define N 101int book[N],match[N];int e[N][N];int n,m;int dfs(int u){int i;for(i = 1; i <= n; i ++){if(!book[i]&&e[u][i]){book[i] = 1;//标记点i已经访问过 if(!match[i]||dfs(match[i]))//如果标记点i没有配对,或者找到了新的配对 {match[i] = u;//更新配对关系 return 1;}}}return 0;}int main(){int i,j,sum,t1,t2;while(scanf("%d%d",&n,&m)!=EOF){for(i = 1; i <= m; i ++){scanf("%d%d",&t1,&t2);e[t1][t2] = 1;//这里是有向图 }memset(match,0,sizeof(match));sum = 0; for(i = 1; i <= n; i ++){//清空上一次搜索时的标记 memset(book,0,sizeof(book));if(dfs(i))//寻找增广路,如果找到,配对数加1 sum ++;}printf("%d\n",sum);//输出配对数 } return 0;}
阅读全文
0 0
- 【二分匹配】【匈牙利算法即由增广路求最大匹配模板】
- 二分图最大匹配(匈牙利算法-DFS增广模板)
- HDOJ 2063 过山车【匈牙利算法求二分图最大匹配 DFS增广 BFS增广】
- HD 2063 增广路径求二分图最大匹配(匈牙利算法)
- 匈牙利算法求二分图的最大匹配寻找增广路的几种思路(转)
- 匈牙利算法 求二分图最大匹配
- 二分图最大匹配模板(匈牙利算法)
- 匈牙利算法模板 二分图最大匹配
- 匈牙利算法求二分图的最大匹配/匈牙利算法模板
- 【HDU2444】【匈牙利算法】【二分匹配】【求最大匹配】【染色】
- 匈牙利算法,二分图最大匹配、多重匹配模板
- 匈牙利算法,求最大匹配数即最小顶点覆盖
- poj3041 最小点覆盖即最大匹配(匈牙利算法)(模板)
- 匈牙利算法-最大二分匹配
- 二分最大匹配--匈牙利算法
- 【模板】匈牙利算法 二分图最大匹配题模板
- 【二分匹配匈牙利算法模板】
- 匈牙利算法求最大匹配
- 【BOOST】boost : : noncopyable 分析,拷贝构造、赋值函数
- QT简易计算器--表达式计算核心算法(二)
- Java与Python对比学习1
- eclipse设置编码格式
- POJ1308 Is It A Tree?
- 【二分匹配】【匈牙利算法即由增广路求最大匹配模板】
- Java发送邮件
- Java面试题大汇总
- 遗传算法的初步学习(一)
- Java中为什么匿名对象中方法,调用局部变量必须加final呢?
- 利用RecyclerView的嵌套实现仿京东筛选框(文字搜索功能)
- 【原创】【LCA】求最近公共祖先的三种方法(一)倍增 ※【USACO MAR11银组】聚会地点
- 文档即编码(一):好设计不是好代码
- Kubernetes总架构图