hdu1068(二分)Girls and Boys
来源:互联网 发布:淘宝价格用什么字体 编辑:程序博客网 时间:2024/05/17 22:34
最大独立集 = 节点 - 最大匹配
#include <stdio.h>#include <string.h>const int MAXN = 5010;//点const int MAXM = 50010;//边struct Edge{ int to, next;} edge[MAXM];int head[MAXN], tot;void init(){ tot = 0; memset(head, -1, sizeof(head));}void addedge(int u, int v){ edge[tot].to = v; edge[tot].next = head[u]; head[u] = tot++;}int linker[MAXN];int un;//左边匹配点数bool used[MAXN];bool dfs(int u){ for(int i = head[u]; i != -1; i = edge[i].next) { //printf("-1\n"); int v = edge[i].to; if(!used[v]) { used[v] = true; if(linker[v] == -1 || dfs(linker[v])) { linker[v] = u; return true; } } } return false;}int hungary(){ int res = 0; memset(linker, -1, sizeof(linker)); for(int u = 0; u < un; u++) { memset(used, false, sizeof(used)); if(dfs(u)) res++; } return res;}int main(){ int i; while(scanf("%d", &un) != EOF) { init(); for(int i = 0; i < un; i++) { int k; // printf("", i); scanf("%d: (%d)",&i, &k); for(int j = 0; j < k; j++) { int x; scanf("%d", &x); addedge(i, x); } } int ans = un - hungary() / 2; printf("%d\n", ans); }}/*73 4 5 62 4 6002 0 11 02 0 1*/
0 0
- hdu1068(二分)Girls and Boys
- 【二分匹配】HDU1068-Girls and Boys
- hdu1068 Girls and Boys(二分图)
- hdu1068 Girls and Boys(二分匹配)
- 二分匹配 HDU1068 Girls and Boys
- Hdu1068-Girls and Boys-【二分图】
- hdu1068 Girls and Boys
- HDU1068--Girls and Boys
- HDU1068:Girls and Boys
- HDU1068-Girls and Boys
- HDU1068 Girls and Boys
- Girls and Boys||HDU1068
- hdu1068 Girls and Boys
- hdu1068 Girls and Boys
- hdu1068 Girls and Boys (二分图最大独立集)
- HDU1068-Girls and Boys(二分图_最大独立集)
- 【图算法之二分图】HDU1068---Girls and Boys
- hdu1068 Girls and Boys,二分图最大独立集
- 宽字符数组wchar_t的输出
- 【java项目实战】一步步教你使用MyEclipse搭建java Web项目开发环境(一)
- T420添加内存与更换硬盘图文参照 (转)
- 各种JS模板引擎对比数据(高性能JavaScript模板引擎)
- 【java项目实战】Servlet详解以及Servlet编写登陆页面(二)
- hdu1068(二分)Girls and Boys
- 在1秒内求出第10000个质数的算法c 实现
- 正则表达式
- Matlab中rand('state',sum(clock))解析
- 在Isight软件里如何调用matlab子程序?
- hdu——2602Bone Collector(第一类背包问题)
- 【java项目实战】dom4j解析xml文件,连接Oracle数据库
- 架构设计:系统间通信——提高ActiveMQ工作性能(下)
- 数据库设计三大范式