二分图最大匹配
来源:互联网 发布:人生 知乎 编辑:程序博客网 时间:2024/05/01 11:23
POJ 1274 The Perfect Stall
#include <cstdio>#include <cstring>int n, m, map[210][210]; int state[210], link[210]; bool find(int p){ for(int i = 1; i <= m; i++){ if(map[p][i] && !state[i]){ state[i] = 1; int j = link[i]; link[i] = p; if(j == -1 || find(j)) return true; link[i] = j; /*int j = link[i]; if( j == -1 || find(j) ){ link[i] = p; return true; }*/ } } return false;}int main(){ int si, tmp, ans; while(~scanf("%d %d", &n, &m)){ memset(map, 0, sizeof(map)); for(int i = 1; i <= n; i++){ scanf("%d", &si); for(int j = 1; j <= si; j++){ scanf("%d", &tmp); map[i][tmp] = 1; } } ans = 0; memset(link, -1, sizeof(link)); for(int i = 1; i <= n; i++){ memset(state, 0, sizeof(state)); if(find(i)) ans++; } printf("%d\n", ans); } return 0;}
#include <cstdio> #include <cstring> int p, n, map[110][310]; int state[310], link[310]; bool find(int a){ for(int i = 1; i <= n; i++){ if(map[a][i] && !state[i]){ state[i] = 1; int j = link[i]; link[i] = a; if(j == -1 || find(j)) return true; link[i] = j; } } return false; } int main(){ int cases, count, tmp, num; scanf("%d", &cases); while(cases--){ scanf("%d %d", &p, &n); memset(map, 0, sizeof(map)); for(int i = 1; i <= p; i++){ scanf("%d", &count); for(int j = 1; j <= count; j++){ scanf("%d", &tmp); map[i][tmp] = 1; } } num = 0; memset(link, -1, sizeof(link)); for(int i = 1; i <= p; i++){ memset(state, 0, sizeof(state)); if(find(i)) num++; } if(num == p) printf("YES\n"); else printf("NO\n"); } return 0; }
0 0
- 二分图最大匹配
- 二分图最大匹配 。
- 二分图最大匹配
- 二分图最大匹配
- 二分图最大匹配
- 二分图最大匹配
- 二分图 最大匹配
- 二分图最大匹配
- 二分图最大匹配
- 二分图最大匹配
- 二分图最大匹配
- 二分图最大匹配
- 二分图最大匹配
- 二分图最大匹配
- 二分图最大匹配
- 二分图最大匹配
- 二分图 最大匹配
- 二分图最大匹配
- PDF转换器注册码
- a.kdjhad结果kg哈电话阿隆索快点哈师大会
- python list 换行分割
- 2013CDC.GZ-关东升.iOS分层架构设计
- 关于火星坐标、偏移、加偏和纠偏、无偏的理解
- 二分图最大匹配
- Windows下配置Tomcat的Apr(包括Https)
- lis_nlgn
- 工作笔记 网络包角度看上网过程 router IP
- java防止反编译代码混淆
- C库函数手册
- Navicat安装配置详解
- uboot环境变量与内核MTD分区关系
- 你的网站域名是被K过的吗?