二分图最大匹配(HihoCoder
来源:互联网 发布:怎么查看淘宝店家电话 编辑:程序博客网 时间:2024/06/06 01:46
题目:
给你一个二分图,让你输出其最大匹配数.
输入
第1行:2个正整数,N,M(N表示点数 2≤N≤1,000,M表示边数1≤M≤5,000)
第2..M+1行:每行两个整数u,v,表示一条无向边(u,v)
输出
第1行:1个整数,表示最大匹配数
样例输入
5 4
3 2
1 3
5 4
1 5
样例输出
2
这道题如果把二分图想明白的话很简单的
还有就是vector的应用
#include <bits/stdc++.h>using namespace std;const int maxn=1e3+10;int pre[maxn];int used[maxn];vector<int>mp[maxn];int v,e;bool Find(int x){ int len=mp[x].size(); //这个表示mp[x]的个数 for(int i=0; i<len; i++) { int y=mp[x][i]; if(!used[y]) { used[y]=1; if( pre[y]==0 || Find(pre[y])) { pre[y]=x; return true ; } } } return false ; //如果mp的个数为0,那么就不存在这样的一个Find(x) }int main(){ while(cin>>v>>e) { int cnt=0; for(int i=0; i<e; i++) { int a,b; cin>>a>>b; mp[a].push_back(b); //因为是无向图,所以两边都要进行标记 mp[b].push_back(a); } memset(pre,0,sizeof(pre)); for(int i=1; i<=v; i++) { memset(used,0,sizeof(used)); //每进行一次查找,都要将used数组重置为0 if(Find(i)) { cnt+=1; } } cout<<cnt/2<<endl; //因为前面for循环找的是所有顶点,也就是说二分图的左右的顶点都进行计算 } return 0;}
阅读全文
0 0
- 二分图最大匹配(HihoCoder
- hihoCoder 1122 二分图最大匹配 最大流
- hihoCoder - 1122 - 二分图最大匹配之匈牙利算法
- hihocoder 1158 质数相关(二分图匹配 最大独立集)
- hihocoder 1122最大二分匹配匈牙利算法
- hihoCoder 1122 二分图二•二分图最大匹配之匈牙利算法
- hihocoder 1122 : 二分图二•二分图最大匹配之匈牙利算法
- hihocoder 1122 : 二分图二•二分图最大匹配之匈牙利算法
- [HihoCoder]#1122 : 二分图二•二分图最大匹配之匈牙利算法
- hihocoder 1122 : 二分图二•二分图最大匹配之匈牙利算法
- hihocoder 1122 : 二分图二•二分图最大匹配之匈牙利算法
- 二分图最大匹配
- 二分图最大匹配 。
- 二分图最大匹配
- 二分图最大匹配
- 二分图最大匹配
- 二分图最大匹配
- 二分图 最大匹配
- Android hybrid 开发实践(android webview)
- 码位(code position/point)Unicode 编码与 Python 2/3 编码兼容性问题
- 【Java】EL表达式
- RecyclerView回收原理分析
- 设计模式(五)--装饰模式
- 二分图最大匹配(HihoCoder
- echarts资源
- hibernate与mybatis的区别优缺点对比
- 通俗易懂动态规划
- 欢迎使用CSDN-markdown编辑器
- 二叉树的遍历
- 一元线性回归
- ios app上传成功但ITunes Connect不显示的解决方法
- Ubuntu 配置 Tomcat