Kindergarten

又是一道自己没思考出来的题 !!!!!

还是老样子,题目去我拉的专题里有。

题目:

给出G给女孩,B给男孩。女孩之间是相互认识的,男孩之间也是相互认识的。如今题目中给出M对男女间会相互认识的关系普,要你计算出男女之间两两都认识的最大人数。

算法:

一開始看到以为是最大团。囧。后来越想越不正确啊。后来看到别人说是求解补图的问题。太深奥了。为了求出满足题目的条件,则要转换成最大独立集来求解。

证明例如以下:

最大独立集是全部点随意两点间都没有连边。

最大团要求:随意两点间都有连边。

补图中:随意两点间都没有连边,意味着原图中随意两点间都有连边。

#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <cstdio>
#include <cstring>
using namespace std; const int MAXN = 200 + 10;
int G[MAXN][MAXN];
int match[MAXN];
bool used[MAXN]; int g,b,m; bool dfs(int u){
for(int i = 1;i <= b;++i){
if(!used[i]&&G[u][i]){
used[i] = 1;
if(match[i] == -1||dfs(match[i])){
match[i] = u;
return true;
}
}
}
return false;
} void solve(){
int res = 0;
memset(match,-1,sizeof(match));
for(int i = 1;i <= g;++i){
memset(used,0,sizeof(used));
if(dfs(i))res++;
}
printf("%d\n",g + b - res);
} int main()
{
//freopen("Input.txt","r",stdin); int kase = 1;
while(scanf("%d%d%d",&g,&b,&m),(g||m||b)){
for(int i = 0;i <= g;++i){
fill(G[i],G[i] + 1 + b,1);
} int x,y;
for(int i = 0;i < m;++i){
scanf("%d%d",&x,&y);
G[x][y] = 0;
}
printf("Case %d: ",kase++);
solve();
}
return 0;
}

poj Kindergarten的更多相关文章

  1. POJ 3692 Kindergarten (二分图 最大团)

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

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

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

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

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

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

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

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

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

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

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

  7. poj 3692 Kindergarten

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

  8. POJ 3692:Kindergarten 求补图的最大点独立集 头一次接触这样的做法

    Kindergarten Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5884   Accepted: 2877 Desc ...

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

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

随机推荐

  1. python风格之包导入

    导入总应该放在文件顶部, 位于模块注释和文档字符串之后, 模块全局变量和常量之前. 导入应该按照从最通用到最不通用的顺序分组: 标准库导入 第三方库导入 应用程序指定导入 每种分组中, 应该根据每个模 ...

  2. jQuery实现当按下回车键时绑定点击事件

    jQuery实现当按下回车键时绑定点击事件 <script> $(function(){ $(document).keydown(function(event){ if(event.key ...

  3. failed to lazily initialize a collection of role 异常

    最近在通过配置实体类的方式,正向自动扫描注解方式配置的hibernate类文件来生成数据库的方法搭建环境,遇到了许多问题. 通过数据库配置hibernate的时候,大家都知道是在实体类对应生成的.hb ...

  4. OGNL表达式详解

    OGNL表达式标签中的值有三种: 1.直接是OGNL表达式. 2.字符串需转义自OGNL表达式. 1)OGNL表达式转换为字符串显示,需要用''(单引号)引起来. 2)转为OGNL表达式的字符串,需要 ...

  5. hibernate悲观锁,乐观锁

    业务逻辑的实现过程中,往往需要保证数据访问的排他性.因此,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的“锁”,即给我们选定的目标数据上锁,使其无 ...

  6. SpriteKit-SKView

    1.暂停这个视图 @property (nonatomic, getter = isPaused) BOOL paused; 2.视图性能的一些参数 @property (nonatomic) BOO ...

  7. eclipse中maven项目交付svn忽略配置文件

    eclipse与maven插件的结合为我们快速搭建开发环境提供了便捷条件,然而maven编译出来的class文件.配置文件和打包文件实际上都不需要进行版本控制,团队中每个人的开发环境可能不太一样,将. ...

  8. C语言指针与数组

    C语言指针与数组 数组的下标应该从0还是1开始? 我提议的妥协方案是0.5,可惜他们未予认真考虑便一口回绝    -- Stan Kelly-Bootle   1. 数组并非指针 为什么很多人会认为指 ...

  9. C#精髓第四讲 GridView 72般绝技

    原文发布时间为:2008-08-03 -- 来源于本人的百度文章 [由搬家工具导入] 原文地址:http://blog.csdn.net/21aspnet/archive/2007/03/25/154 ...

  10. 32深入理解C指针之---字符串操作

    一.字符串操作主要包括字符串复制.字符串比较和字符串拼接 1.定义:字符串复制strcpy,字符串比较strcmp.字符串拼接strcat 2.特征: 1).必须包含头文件string.h 2).具体 ...