poj3692_Kindergarten
这题目大意是:男孩互相认识,女孩互相认识,一部分男女之间认识,老师要选一部分人,要求这部分人必须都相互认识。
这是一个二部图,先求出补图,在补图中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的更多相关文章
随机推荐
- ylbtech-Unitity-CS-Arrays:数组
ylbtech-Unitity-CS-Arrays:数组 1.A,效果图返回顶部 1.B,源代码返回顶部 1.B.1, using System; class DeclareArraysSampl ...
- 十一、jdk命令之Jstatd命令(Java Statistics Monitoring Daemon)
目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...
- VVDocumenter-Xcode 规范注释生成器 插件之安装调试适应新版本
1.下载地址: 很多时候,为了快速开发,很多的技术文档都是能省则省,这个时候注释就变得异常重要,再配合Doxygen这种注释自动生成文档的,就完美了.但是每次都要手动输入规范化的注释,着实也麻烦,但有 ...
- 移动应用(手机应用)开发IM聊天程序解决方案
这个解决方法已经定制下来很久了,上一段时间比较忙,没有时间整这些东西.最近稍微好些,不怎么加班.所以抽空总结下,同时也分享给大家,也算是给大家一个借鉴吧!或许这并不是最好的解决方案,但只要能满足当前需 ...
- free 查看系统内存
第二部分(-/+ buffers/cache):(-buffers/cache) used内存数:286M (指的第一部分Mem行中的used – buffers – cached)(+buffers ...
- 立体匹配:关于OpenCV读写middlebury网站的给定的视差并恢复三维场景的代码
Middlebury是每个研究立体匹配算法的人不可能不使用的网站,Middlebury提供了许多标准的测试库,这极大地推进了立体匹配算法的进展.Middlebury提供的标准库,其计算出的视差保存在后 ...
- C Primer Plus(第五版)8
第 8 章 字符输入/输出和输入确认 在本章中你将学习下列内容: · 有关输入,输出以及缓冲和非缓冲输入之间的区别的更多内容. · 从键盘模拟文件结尾条件的方法. · 如何重定向将你的程序与文件相连接 ...
- Skill
Skill Yasser is an Egyptian coach; he will be organizing a training camp in Jordan. At the end of ca ...
- HttpWebRequest访问时,错误:(401)未经授权。
HttpWebRequest访问时,错误:(401)未经授权. 某网页,我不想做登录界面,直接使用域的帐号密码来访问.如果网站设置成Window身份验证,单独的页面都没问题,而是通过使用HttpWeb ...
- Hibernate和JDBC、EJB比较
参考:http://m.blog.csdn.net/article/details?id=7228061 一.Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App S ...