[poj3692]Kindergarten
最大团=反图的最大独立集,而反图又恰好是一张二分图,根据二分图的最大独立集=n-最大匹配就可以做了。
1 #include<cstdio> 2 #include<cstring> 3 #define N 405 4 struct ji{ 5 int nex,to; 6 }edge[N*N]; 7 int E,t,n,m,k,x,y,ans,head[N],vis[N],flag[N],a[N][N]; 8 void add(int x,int y){ 9 edge[E].nex=head[x]; 10 edge[E].to=y; 11 head[x]=E++; 12 } 13 bool dfs(int k){ 14 if (vis[k])return 0; 15 vis[k]=1; 16 for(int i=head[k];i!=-1;i=edge[i].nex){ 17 int v=edge[i].to; 18 if ((!flag[v])||(dfs(flag[v]))){ 19 flag[v]=k; 20 flag[k]=v; 21 return 1; 22 } 23 } 24 return 0; 25 } 26 int main(){ 27 while (scanf("%d%d%d",&n,&m,&k)!=EOF){ 28 if ((!n)&&(!m)&&(!k))return 0; 29 memset(a,0,sizeof(a)); 30 E=0; 31 memset(head,-1,sizeof(head)); 32 for(int i=1;i<=k;i++){ 33 scanf("%d%d",&x,&y); 34 a[x][y]=1; 35 } 36 for(int i=1;i<=n;i++) 37 for(int j=1;j<=m;j++) 38 if (!a[i][j])add(i,j+n); 39 ans=n+m; 40 memset(flag,0,sizeof(flag)); 41 for(int i=1;i<=n;i++){ 42 memset(vis,0,sizeof(vis)); 43 if (!flag[i])ans-=dfs(i); 44 } 45 printf("Case %d: %d\n",++t,ans); 46 } 47 }
View Code
转载于:https://www.cnblogs.com/PYWBKTDA/p/11254715.html
[poj3692]Kindergarten相关推荐
- 图论总结(一)二分图最大匹配
二分图最大匹配 (一).二分图 1.定义 2.性质 3.判定 (二).二分图的匹配 1.二分图的最大匹配 2. König定理及其证明 3.最小边覆盖与最大独立集 (三).增广路径 1.定义 2.性质 ...
- 【ZOJ - 3715】Kindergarten Election(枚举得票数,贪心)
题干: At the beginning of the semester in kindergarten, the n little kids (indexed from 1 to n, for co ...
- UVA494 Kindergarten Counting Game
C语言程序员的一项重要工作就是封装功能函数. 问题链接:UVA494 Kindergarten Counting Game. 题意简述:幼儿园数单词游戏.输入若干句话,数一下每句有几个单词输出. 问题 ...
- UVA494 Kindergarten Counting Game【输入输出+水题】
Everybody sit down in a circle. Ok. Listen to me carefully. "Woooooo, you scwewy wabbit!" ...
- poj3692(二分匹配)
最大孩子数=(男孩子数+女孩子数)-最大匹配数 #include<iostream> #include<algorithm> #include<cstdio> #i ...
- poj3692(二分图最大独立集)
题目大概意思为有G个女生和B个男生,每个男生都相互认识,每个女生也相互认识,部分男生与部分女生相互认识,求最大相互认识的点集 题目很简单,只用稍微转换一下思路即可,因为我们要以男生与女生来构建二分图, ...
- POJ3692 最大点权独立集元素个数
题意: n个男孩和m个女孩,给你他们谁和谁彼此了解,问你要找到一个集合,使得这个集合中的男孩和女孩相互了解,并且人数最多. 思路: 简单题目,其实就是在求最大点权独立集元素个数,先 ...
- UVA 494(Kindergarten Counting Game)
这道题的标题中的幼儿园让人看得郁闷,计算单词的数目... #include<stdio.h>#include<stdlib.h>#include<ctype.h># ...
- 6.494 - Kindergarten Counting Game
2019独角兽企业重金招聘Python工程师标准>>> 原题只包含大小写字母,所以遇见字母的时候计数器++; 那么连续的字母就会无限相加. 为了解决这个问题,用一个标识符,遇见字 ...
最新文章
- JavaScript与DOM编程
- 关于jboss在jdk6下webservice不正常问题的解决
- 前端学习(1466):表格案例其他效果演示
- raml2html 安装,Raml实践
- 撇去 Windows 的微软,又掉进了贪污贿赂的深坑
- 操作系统中的hosts文件
- 七月算法机器学习 8 信息论、最大熵模型与EM算法
- Android Studio查看Android源码
- 解决ColorPix拾色器提取颜色错误
- linux的vmstat命令,vmstat命令参数详解
- python取字符串首字母_python字符串操作
- Mac终端应用变身文件 MD5/SHA1 校验工具
- 【谈谈疫情+金三银四下测试面试的行情】一个月内连续面试40+位候选人。
- 加油站都需要什么手续_开办加油站需要办哪些手续?
- 电气simulink常用模块_FANUC 各IO模块保险丝位置
- turtle画樱花树林
- 2007中国各省GDP排名
- 谦逊编程(翻译整理)
- npm ERR /usr/bin/git ls-remote -h -t git://github.com/adobe-webplatform/eve.git
- Apache服务器的搭建与配置