poj 3692 Kindergarten(二分匹配,最大独立集)
来源:互联网 发布:kaggle 知乎 编辑:程序博客网 时间:2024/05/17 06:44
题目链接
Description
In a kindergarten, there are a lot of kids. All girls of the kids know each other and all boys also know each other. In addition to that, some girls and boys know each other. Now the teachers want to pick some kids to play a game, which need that all players know each other. You are to help to find maximum number of kids the teacher can pick.
Input
The input consists of multiple test cases. Each test case starts with a line containing three integers
G, B (1 ≤ G, B ≤ 200) and M (0 ≤ M ≤ G × B), which is the number of girls, the number of boys and
the number of pairs of girl and boy who know each other, respectively.
Each of the following M lines contains two integers X and Y (1 ≤ X≤ G,1 ≤ Y ≤ B), which indicates that girl X and boy Y know each other.
The girls are numbered from 1 to G and the boys are numbered from 1 to B.
The last test case is followed by a line containing three zeros.
Output
For each test case, print a line containing the test case number( beginning with 1) followed by a integer which is the maximum number of kids the teacher can pick.
Sample Input
2 3 31 11 22 32 3 51 11 22 12 22 30 0 0
Sample Output
Case 1: 3Case 2: 4
Source
[Submit] [Go Back] [Status] [Discuss]
题解:
这是一道最大独立集的问题,就是构造一个互不认识的关系图,而且这是个二分图,二分图的最大独立集为总点数-二分匹配数,然后就转化成了最大匹配。
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn=200+10;int g[maxn][maxn],match[maxn];bool used[maxn];int n,m;bool bfs(int u){for(int i=1;i<=m;i++){if(g[u][i]&&!used[i]){used[i]=true;if(match[i]<0||bfs(match[i])){match[i]=u;return true;}}}return false;}int hungry(){int ans=0;memset(match,-1,sizeof(match));for(int i=1;i<=n;i++){memset(used,false,sizeof(used));if(bfs(i)) ans++;}return ans;}int main(){int k;int cas=0;while(~scanf("%d%d%d",&n,&m,&k)){if(n==0&&m==0&&k==0) break;memset(g,0,sizeof(g));for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) g[i][j]=1;while(k--){int u,v;scanf("%d%d",&u,&v);g[u][v]=0;}printf("Case %d: %d\n",++cas,n+m-hungry());}}
- poj 3692 Kindergarten(二分图匹配,最大独立集)
- poj 3692 Kindergarten(二分匹配,最大独立集)
- poj 3692 Kindergarten(最大独立点集 + 二分图最大匹配)
- poj 3692 二分图最大独立集 Kindergarten
- poj 3692 Kindergarten 二分图 最大独立集
- POJ 3692 - Kindergarten 二分图的最大独立点集
- Poj 3692 Kindergarten 二分图最大独立点集
- POJ 3692 Kindergarten 二分图最大独立集
- POJ - 3692 Kindergarten 二分图 最大匹配
- POJ 3692 Kindergarten ( 最大独立点集 )
- POJ 3692 Kindergarten(最大独立集)
- POJ 3692 Kindergarten (最大独立集)
- POJ 3692 Kindergarten(最大独立集)
- poj 3692 Kindergarten (最大独立集)
- POJ 3692 Kindergarten(最大独立集)
- poj--3692--Kindergarten(最大独立集)
- POJ 3692 Kindergarten (最大独立集)
- POJ-3692Kindergarten,求最大独立集!
- HDOJ 1257 最少拦截系统(最长上升子序列)
- HDU 5410 CRB and His Birthday
- Color
- 直播APP开发过程
- 微软面试100题系列---二叉树的层次遍历
- poj 3692 Kindergarten(二分匹配,最大独立集)
- Ubuntu安装软件包时缺少依赖
- 字符集
- Tensorflow的Helloword:使用简单Softmax Regression模型来识别Mnist手写数字
- ios开发 UI高级 自定义表情键盘
- kaptcha验证码
- Python3.5学习之旅01
- Android Fragment 你应该知道的一切
- Maven 简介(1)