【匈牙利算法模板】BZOJ1191-超级英雄
2016-03-12 19:44
267 查看
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int MAXN=1001+100; int p[MAXN][MAXN]; int vis[MAXN],lk[MAXN]; int n,m; void init() { scanf("%d%d",&n,&m); for (int i=1;i<=m;i++) { int u,v; scanf("%d%d",&u,&v); p[i][u]=p[i][v]=1; } } int find(int u) { for (int i=0;i<n;i++) { if (!vis[i] && p[u][i]) { vis[i]=1; if (!lk[i] || find(lk[i])) { lk[i]=u; return 1; } } } return 0; } void Hungary() { memset(lk,0,sizeof(lk)); int ans=0; for (int i=1;i<=m;i++) { memset(vis,0,sizeof(vis)); if (find(i)) ans++;else break; /*我一开始写成了if (!find(i)) 那么输出i-1并且break..后来发现这样的话如果全部题都能够答,就没有输出了*/ } cout<<ans<<endl; } int main() { init(); Hungary(); return 0; }
相关文章推荐
- javascript面试题
- 集合框架学习之Guava Collection
- zigbee 基础知识
- Divisibility(区间)
- ATEN宏正发布全新CN8600 KVM over IP解决方案
- commons-fileupload实现文件上传下载
- 初识runloop
- iOS中MD5加密
- 第3周.项目2:本月有几天?
- 【opencv】OpenCv的基本数据类型
- linux 系统优化
- 跟着廖雪峰的git教程学习(2)时光机穿梭
- 登录验证码的制作与判断正误
- 第3周.项目2:个人所得税计算器
- 第2周项目4 用循环求(2)
- 学习进度
- __VA_ARGS__用法
- 打印图形b
- Android平台移植Net-Snmp小记
- opencv颜色识别学习总结