POJ 题目3692 Kindergarten(最大独立集)
2015-07-21 21:13
288 查看
Kindergarten
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
Sample Output
Source
2008 Asia Hefei Regional Contest Online by USTC
题目大意:幼儿园有g个女孩和b个男孩,同性之间互相认识,而且男孩和女孩之间有的也互相认识。现在要选出来最多的孩子,他们之间都互相认识。
一道基础的二分图最大独立集问题。
ac代码
Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 5710 | Accepted: 2776 |
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 3 1 1 1 2 2 3 2 3 5 1 1 1 2 2 1 2 2 2 3 0 0 0
Sample Output
Case 1: 3 Case 2: 4
Source
2008 Asia Hefei Regional Contest Online by USTC
题目大意:幼儿园有g个女孩和b个男孩,同性之间互相认识,而且男孩和女孩之间有的也互相认识。现在要选出来最多的孩子,他们之间都互相认识。
一道基础的二分图最大独立集问题。
ac代码
#include<stdio.h> #include<string.h> int link[220],map[220][220],vis[220]; int x,y,m; void init() { int i,j; for(i=0;i<=x;i++) { for(j=0;j<=y;j++) map[i][j]=1; } } int dfs(int x) { int i; for(i=1;i<=y;i++) { if(!vis[i]&&map[x][i]) { vis[i]=1; if(link[i]==-1||dfs(link[i])) { link[i]=x; return 1; } } } return 0; } int main() { int c=0; while(scanf("%d%d%d",&x,&y,&m)!=EOF,x||m||y) { int i; init(); while(m--) { int a,b; scanf("%d%d",&a,&b); map[a][b]=0; } memset(link,-1,sizeof(link)); int ans=0; for(i=1;i<=x;i++) { memset(vis,0,sizeof(vis)); if(dfs(i)) ans++; } printf("Case %d: %d\n",++c,x+y-ans); } }
相关文章推荐
- 静态类和静态方法、接口和抽象类、内部类、单子设计模式
- 【多校第一场】【单调队列】HDU 5289 Assignment
- 利用树莓派做智能小车
- Objective-C设计模式——单例Singleton(对象创建)
- poj 2398 Toy Storage (计算几何,判断点和线段关系)
- java 接口。Android Interface 自定义接口回调。
- 获取Windows 10(2)
- LeetCode题解——Merge Sorted Array
- 二叉树 二叉树的性质 存储结构 遍历二叉树 C实现二叉树的创建和遍历 线索二叉树
- 39. Combination Sum
- Codeforces Gym 100463B Music Mess Hash 逻辑题
- [leedcode 105] Construct Binary Tree from Preorder and Inorder Traversal
- 00-自测4. Have Fun with Numbers (20)
- hdu5294||2015多校联合第一场1007 最短路+最大流
- ARC工程导人非ARC的代码
- 图像处理与计算机视觉基础,经典以及最近发展
- oracle取整操作
- TCP/IP协议
- 011.Singleton 单例模式
- 012.private protect public 访问控制符