Kindergarten
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 5660   Accepted: 2756

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 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

field=source&key=2008+Asia+Hefei+Regional+Contest+Online+by+USTC">2008 Asia Hefei Regional Contest Online by USTC



题目链接:

id=3692">http://poj.org/problem?id=3692



题目大意:一些男生和女生,男生们相互都认识。女生们相互都认识,给出男女生的认识关系。要求一个最大的集合,集合中随意两个人都互相认识,求这个最大集合的元素个数



题目分析:二分图最大团问题。依据定理:

二分图最大团=原图补图的最大独立集

最大独立集=总点数-最大匹配

用匈牙利算法解出原图补图的最大匹配就可以算出最大团中元素个数 (注:一般图的最大团问题是NP问题)



代码:

#include <cstdio>
#include <cstring>
int const MAX = 205;
int cx[MAX], cy[MAX];
bool vis[MAX], map[MAX][MAX];
int g, b, m; int DFS(int x)
{
for(int y = 1; y <= b; y++)
{
if(!vis[y] && map[x][y])
{
vis[y] = true;
if(cy[y] == -1 || DFS(cy[y]))
{
cy[y] = x;
cx[x] = y;
return 1;
}
}
}
return 0;
} int MaxMatch()
{
int ans = 0;
memset(cx, -1, sizeof(cx));
memset(cy, -1, sizeof(cy));
for(int i = 1; i <= g; i++)
{
if(cx[i] == -1)
{
memset(vis, false, sizeof(vis));
ans += DFS(i);
}
}
return ans;
} int main()
{
int ca = 1;
while(scanf("%d %d %d", &g, &b, &m) != EOF && (g + b + m))
{
memset(map, true, sizeof(map));
for(int i = 0; i < m; i++)
{
int u, v;
scanf("%d %d", &u, &v);
map[u][v] = false;
}
printf("Case %d: %d\n", ca ++, g + b - MaxMatch());
}
}

POJ 3692 Kindergarten (二分图 最大团)的更多相关文章

  1. POJ 3692 Kindergarten(最大团问题)

    题目链接:http://poj.org/problem?id=3692 Description In a kindergarten, there are a lot of kids. All girl ...

  2. POJ3692 Kindergarten —— 二分图最大团

    题目链接:http://poj.org/problem?id=3692 Kindergarten Time Limit: 2000MS   Memory Limit: 65536K Total Sub ...

  3. POJ 3692 Kindergarten (补图是二分图的最大团问题)

    题意 幼稚园里有m个男孩和n个女孩(m.n范围都是[1,200]),男孩之间相互认识,女孩之间也相互认识,另外有部分男孩和女孩也认识.现在要举办一个活动,选取一些同学,要求所有选取的同学之间两两相互认 ...

  4. POJ 3692 Kindergarten(二分图最大独立集)

    题意: 有G个女孩,B个男孩.女孩彼此互相认识,男孩也彼此互相认识.有M对男孩和女孩是认识的.分别是(g1,b1),.....(gm,bm). 现在老师要在这G+B个小孩中挑出一些人,条件是这些人都互 ...

  5. POJ 3692 Kindergarten(最大独立集)

    [题目链接] http://poj.org/problem?id=3692 [题目大意] 男生相互之间都认识,女生相互之间也都认识, 一些男生和一些女生相互之间也认识,求找出最多的人参加派对, 他们相 ...

  6. poj 3692 Kindergarten (最大独立集)

    Kindergarten Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4903   Accepted: 2387 Desc ...

  7. poj 3692 Kindergarten (最大独立集之逆匹配)

    Description In a kindergarten, there are a lot of kids. All girls of the kids know each other and al ...

  8. poj 3692 Kindergarten

    Kindergarten Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6956   Accepted: 3436 Desc ...

  9. POJ 3692:Kindergarten(最大的使命)

    id=3692">Kindergarten Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4920   Ac ...

随机推荐

  1. 使用SndPlaySound从内存中播放WAV

    有些时候,我们写的程序需要播放音乐,一般大家会采用以下几种方式:1.把音乐文件放置在某个特定的目录,例如Sound,WAV,Music供程序读取播放:2.使用资源来存放音乐.有些人估计也是使用这个方法 ...

  2. Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法

    Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法 最近由于老师要求要在Ubuntu下QT上进程多线程服务器的开发,虽然只是单纯的调用qt的network模块,但是为了避免麻烦,我 ...

  3. 网易云课堂_程序设计入门-C语言_第三周:循环_2数字特征值

    2 数字特征值(5分) 题目内容: 对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值.对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推.这个整数在第n位上的数字记作 ...

  4. D. DZY Loves Modification

    D. DZY Loves Modification time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  5. uva 103 Stacking Boxes(DAG)

    题目连接:103 - Stacking Boxes 题目大意:有n个w维立体, 输出立体互相嵌套的层数的最大值, 并输出嵌套方式, 可嵌套的要求是外层立体的w条边可以分别对应大于内层立体. 解题思路: ...

  6. openstack之horizon源码分析

    一.基础准备: Horizon是基于django webframework开发的标准的Python wsgi程序,django的设计专注于代码的高度可重用,信奉DRY原则,一切面向对象,而Horizo ...

  7. 简单实现仿UITabBarController界面

    第一步:添加两个占位View 第二步:添加子控制器 第三步:添加按钮 #import "ViewController.h" #define SCREEN_WIDTH ([UIScr ...

  8. bootstrap-js(4)标签页

    实例 标签页(Tab)在 Bootstrap 导航元素 一章中介绍过.通过结合一些 data 属性,您可以轻松地创建一个标签页界面. 通过这个插件您可以把内容放置在标签页或者是胶囊式标签页甚至是下拉菜 ...

  9. asp.net ImageMap控件

    ImageMap 控件可创建包含定义的作用点区域的图像.当用户单击作用点区域时,该控件可生成到服务器的回发或导航到指定的 URL 首先是添加一个asp:ImageMap 选择asp:CircleHot ...

  10. java打包/命令行方式运行jar(命令行进行程序测试)

    public class Testtmp { public static void main(String[] args) { // TODO Auto-generated method stub f ...