这题目大意是:男孩互相认识,女孩互相认识,一部分男女之间认识,老师要选一部分人,要求这部分人必须都相互认识。

这是一个二部图,先求出补图,在补图中G‘左右两点有连线说明在G中两者不认识,反之成立。

所以就是在补图中怎样来构造左右两部分间互相之间没有连线的图。============> 在G’中求出最大匹配,用匈牙利算法,然后去掉这些匹配中每个匹配的一个点让连线断掉,就找到了最大独立点集。说到这里,大家就知道了,求最大团就是等价于求补图中的最大独立点集。

代码如下:

 #include <stdio.h>
#include <string.h>
int n1,n2,m,ans;
int result[]; //记录V2中的点匹配的点的编号
bool state []; //记录V2中的每个点是否被搜索过
bool data[][];//邻接矩阵 true代表有边相连
void init() {
int t1,t2;
for(int i=;i<=;++i)
for(int j=;j<=;++j)
data[i][j]=;
memset(result,,sizeof(result));
ans = ;
for (int i = ; i <= m; i++) {
scanf("%d%d",&t1,&t2);
data[t1][t2] = ;
}
return;
}
bool find(int a) {
for (int i = ; i <= n2; i++) {
if (data[a][i] == && !state[i]) { //如果节点i与a相邻并且未被查找过
state[i] = true; //标记i为已查找过
if (result[i] == //如果i未在前一个匹配M中
|| find(result[i])) { //i在匹配M中,但是从与i相邻的节点出发可以有增广路
result[i] = a; //记录查找成功记录
return true; //返回查找成功
}
}
}
return false;
}
int main() {
int CASE=;
while(~scanf("%d%d%d",&n1,&n2,&m)&&(n1||n2||m)){
init();
for (int i = ; i <= n1; i++) {
memset(state,,sizeof(state)); //清空上次搜索时的标记
if (find(i)) ans++; //从节点i尝试扩展
}
printf("Case %d: %d\n",++CASE,n1+n2-ans);
}
return ;
}

poj3692_Kindergarten的更多相关文章

随机推荐

  1. 查看iis错误日志时提示找不到 freb.xsl的解决方法

    http://stackoverflow.com/questions/786638/how-can-i-get-gzip-compression-in-iis7-working/787251 Look ...

  2. android 中怎么保存当前按钮的状态?就是退出后重新进入还是上一次离开的状态

    比如当前Activity中有一个按钮目前是开启,点击后按钮的text变成关闭!然后退出该Activtity,然后重新打开该Activity后当前按钮的状态还是关闭呢? 就是设置一个状态flag.fla ...

  3. MODBUS-RTU学习

    一 RTU比ASCII传输密度高.参数格式:起始位+8BITS数据位+校验位+停止位. 1.1校验默认为偶校验,建议为无校验,测试要多1个停止位(即停止位为2位) 1.2发送顺序为从左到右LSB-&g ...

  4. Java8之默认方法和静态接口方法

    前言 上一篇文章30分钟入门Java8之lambda表达式,我们学习了lambda表达式.现在继续Java8新语言特性的学习,今天,我们要学习的是默认方法和静态接口方法. 这一Java8的新语言特性, ...

  5. java多线程之死锁

    产生死锁的条件: 1.有至少一个资源不能共享2.至少有一个任务必须持有一个资源并且等待获取另一个被别的任务持有的资源3.资源不能任务抢占4.必须有循环等待 只要打破其中一个条件就不会产生死锁,通常是打 ...

  6. RunJS - 在线编辑、展示、分享、交流你的 JavaScript 代码

    发现一个很好玩,很强大的网站 RunJS - 在线编辑.展示.分享.交流你的 JavaScript 代码   http://runjs.cn/ 比如: http://runjs.cn/detail/l ...

  7. 两款HTTP流量分析工具HttpWatch与Fiddler的比较(转)

    最近突然想看看HTTP的消息到底是怎么回事,在网上搜了几款软件来监控,并且搜到了下面的文章,感觉介绍的不错,就copy下来了.下文摘自:http://www.imkevinyang.com/2009/ ...

  8. [ActionScript 3.0] AS 实现JSON转换为XML

    package com.fylibs.utils { /** * @author:Frost.Yen * @E-mail:871979853@qq.com * @create:2015-12-25 下 ...

  9. [ActionScript 3.0] AS3虚线绘制方法

    import flash.geom.Point; import flash.display.MovieClip; import flash.display.Graphics; var mc:Movie ...

  10. linux 去掉 ^M

    要去除他,最简单用下面的命令: dos2unix filename 亲测可用   以下方式不可以: set ff=unix  %s/^M//g 可能是^M输入方式有问题 ^M 输入方法: ctrl+V ...