二分图最大匹配模板【匈牙利;Dinic最大流】
来源:互联网 发布:js实现下拉菜单 编辑:程序博客网 时间:2024/05/15 00:58
二分图最大匹配模板【匈牙利;Dinic最大流】
匈牙利算法
int n,m;vector<int> map[100010];int match[100010];//保存匹配的互相点bool vis[100010];bool dfs(int u){ for(int j=0;j<map[u].size();j++) { int v=map[u][j]; if(!vis[v]) { vis[v]=true; if(!match[v]||dfs(match[v])) { match[v]=u; return true; } } } return false;}int solve(){ int ans=0; for(int i=1;i<=n;i++) { memset(vis,false,sizeof(vis)); if(dfs(i)) ans++; } return ans;}
十分简洁好理解的版,就是不断找增广路
Dinic最大流
最大流的版本重点在于建图
建图后可套入任何一个最大流模板
求出的最大流即为最大匹配
不会最大流的小伙伴可以看我的博客
图论算法-网络最大流【EK;Dinic】
建边过程:
int n,m,e; //n,m分别为两个点集点数;e为原图中的边 cin>>n>>m>>e; for(int i=1;i<=e;i++) { int u,v; cin>>u>>v; add(u,v+n,1);//先建原图的边,要注意节点编号以题目为准 add(v+n,u,0); } int s=0,t=n+m+1;//建立超级源点和超级汇点 for(int i=1;i<=n;i++) { add(0,i,1); add(i,0,0);//将超级源点对X点集每个点引一条容量为1的边 } for(int i=n+1;i<=n+m;i++) { add(i,t,1);将Y点集每个点向超级汇点引一条容量为1的边 add(t,i,0); }
阅读全文
0 0
- 二分图最大匹配模板【匈牙利;Dinic最大流】
- 二分图最大匹配模板(匈牙利算法)
- 匈牙利算法模板 二分图最大匹配
- 匈牙利算法,二分图最大匹配、多重匹配模板
- Dinic 二分图最大匹配最大流解法(来自lixiyi学姐的模板
- 【模板】匈牙利算法 二分图最大匹配题模板
- 二分图最大匹配 匈牙利算法 (自己写的模板)
- 透彻解析二分图最大匹配匈牙利算法模板
- 二分图最大匹配之匈牙利算法模板
- POJ1274 匈牙利算法 最大二分图匹配入门模板
- 二分图最大匹配算法-匈牙利算法(Hungary)模板
- 二分图最大匹配(匈牙利算法-DFS增广模板)
- HDU 2063 过山车 【二分图最大匹配(匈牙利模板)】
- 【模板】匈牙利算法——二分图最大匹配
- 【匈牙利算法】二分图最大匹配(模板)
- 【二分图最大匹配-匈牙利算法及其优化算法模板】
- Ural1109_Conference(二分图最大匹配/匈牙利算法/网络最大流)
- 二分图最大匹配(匈牙利算法)
- 阿里云正式进入印度,布局全球云计算市场
- 初学者小白HTML入门——分帧标签
- 图像为什么能相减
- spring+hibernate 事务管理
- CSS+HTML实现3D图片旋转效果
- 二分图最大匹配模板【匈牙利;Dinic最大流】
- string-6.ZigZag Conversion
- WPF下给DataGrid自动增加序列号
- divmod数字处理函数
- NotePad++编辑Linux中的文件
- 记转战AI之开篇
- phpstrom快捷键
- LeetCode 448 Find All Numbers Disappeared in an Array
- 在windows7下给vs2015配置dirent.h头文件