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. 组合数学之Polya计数 TOJ1116 Let it Bead

    1116: Let it Bead  Time Limit(Common/Java):1000MS/10000MS     Memory Limit:65536KByteTotal Submit: 7 ...

  2. oracle dual表用途及结构详解

    dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情,如下: 1.查看当前用户,可以在 SQL Plus中执行下面语句 sele ...

  3. 【转】关于AI的目标导向型行动计划

    作者:Brent Owens 目标导向型行动计划(简称GOAP)是一种能够轻松呈现给你的代理选择的AI系统,也是帮助你可以无需维持一个庞大且复杂的有限状态机而做出明智的决策的机器. 演示版本 在这一演 ...

  4. ACM程序设计选修课——1057: Beautiful Garden(模拟+耐心调试)

    1057: Beautiful Garden Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 25  Solved: 12 [Submit][Statu ...

  5. centons7编译安装zabbix3.4【转https://www.cnblogs.com/kowloon/p/7771495.html】

    或者参考官方文档:https://www.zabbix.com/documentation/3.4/manual/installation/install 一.预编译环境准备 1.lamp安装和启动 ...

  6. 关于后台返回excel文件的问题

    一般情况ajax请求只能获取解析非流文件类型,而excel是流文件类型,这个时候获取到的数据会是一串乱码的字符串 想要下载这个excel文件,通过form表单模拟的方式可以解决 var form = ...

  7. uva 11732 (trie树)

    题意:求N个字符串两两比较,共比较了多少次? #include<iostream> #include<cstring> #include<cstdio> using ...

  8. APUE 学习笔记(五) 进程环境

    1.main函数 C程序总是从main函数开始执行,当内核执行C程序时,在调用main函数之前先调用exec函数从内核获取命令行参数和环境变量值   2.进程终止 正常终止: (1)在main函数内执 ...

  9. SPOJ QTREE4 - Query on a tree IV

    You are given a tree (an acyclic undirected connected graph) with N nodes, and nodes numbered 1,2,3. ...

  10. 标准C程序设计七---42

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...