二分图匹配之最小点覆盖 HDU1498&&POJ3041
2015-08-26 15:53
337 查看
#include <iostream> #include <cstdio> #include <cstring> using namespace std; struct edge { int fro,to,next; }e[10010]; int head[510]; bool vis[510]; int link[510]; int find(int x) { for(int i=head[x];i!=-1;i=e[i].next) { if(!vis[e[i].to]) { int q=link[e[i].to]; link[e[i].to]=e[i].fro; vis[e[i].to]=true; if(q==-1||find(q)) return 1; link[e[i].to]=q; } } return 0; } int main() { int n,k; while(scanf("%d%d",&n,&k)!=EOF) { int ans=0; memset(head,-1,sizeof(head)); for(int i=1;i<=k;i++) { scanf("%d%d",&e[i].fro,&e[i].to); e[i].next=head[e[i].fro]; head[e[i].fro]=i; } memset(link,-1,sizeof(link)); for(int i=1;i<=n;i++) { memset(vis,false,sizeof(vis)); ans+=find(i); } cout<<ans<<endl; } return 0; }
View Code
最小点覆盖,用最少的点,使得每条边至少有一个端点在这些点中
最小点覆盖数=最大匹配数
相关文章推荐
- 轻松python文本专题-字符串逐字符反转以及逐单词反转
- 【Sublime Text 3】Sublime Text 3 - cracked 3083\3085
- RSA加密解密有点意思,传送带拿走不谢!
- BLToolkit 关于执行事务的
- Jgit clone repostory
- 关键字const
- ACdream 1420 High Speed Trains(容斥原理+大数)
- apache tomcat https应用
- Git review :error: unpack failed: error Missing tree
- SharedPreferences存储和SQLite存储
- [LeedCode OJ]#75 Sort Colors
- Cassandra在CQL语言层面支持多种数据类型
- 最大连续子数组和
- ThinkPHP URL重写
- USACO-Section 1.3 Combination Lock(枚举)
- 双向链表
- C潜规则之保持语法简单
- hdoj 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 【多重背包 01背包】
- jQuery Validate 表单验证
- Office 365 IT Professional——如何用PowerShell创建Site Collection?