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. linux 下java jar包的方法

      test.java 和 example.jar 在同一目录:并且test.java引用了example.jar 首先编译test.java: javac -cp example.jar test. ...

  2. Git 应用问题(一) —— failed to push some refs to git

    今天在本地创建了一个新的 repository,想关联到 Github 上的时候出现问题,如下: Gerrard@LAPTOP-79570TK2 MINGW64 /g/github-workspace ...

  3. Linux Shell系列教程之(六)Shell数组

    本文是Linux Shell系列教程的第(六)篇,更多shell教程请看:Linux Shell系列教程 Shell在编程方面非常强大,其数组功能也非常的完善,今天就为大家介绍下Shell数组的用法. ...

  4. TensorFlow开发流程 Windows下PyCharm开发+Linux服务器运行的解决方案

    不知道是否有许多童鞋像我一样,刚开始接触TensorFlow或者其他的深度学习框架,一时间有一种手足无措的感觉. 怎么写代码?本机和服务器的关系是啥?需要在本机提前运行吗?怎么保证写的代码是对的??? ...

  5. python ATM大作业之alex思路

    一 ATM alex想了一个思路,就是定义一个函数,这个函数可以实现所有的atm的功能:取款,转账,消费等等. 为了实现这个想法,alex构建了一个两级字典,厉害了.我发现,厉害的人都喜欢用字典.这里 ...

  6. Linux运维打怪升级篇,从苦逼到牛逼的必备装备(转)

    http://chenhao6.blog.51cto.com/6228054/1949673

  7. Spring定义的五种事务隔离级别

    在Spring中定义了5中不同的事务隔离级别. 1. ISOLATION_DEFAULT(一般情况下使用这种配置既可) 这是一个PlatfromTransactionManager默认的隔离级别,使用 ...

  8. 【NOIP2015】信息传递(强连通分量)

    题意:找一张图中的最小环 O(n) 思路:强连通分量tarjan即可 注意环中节点数>1 ..]of longint; n,i,ans,tot,id,top,time,x:longint; pr ...

  9. Linux 虚拟地址与物理地址的映射关系分析【转】

    转自:http://blog.csdn.net/ordeder/article/details/41630945 版权声明:本文为博主(http://blog.csdn.net/ordeder)原创文 ...

  10. Button Style Status

    <Window x:Class="Dxsl.WPF.APP.Views.StyleTest2" xmlns="http://schemas.microsoft.co ...