poj 3692 Kindergarten (最大独立集)
来源:互联网 发布:同步软件 编辑:程序博客网 时间:2024/05/24 06:48
题意:G个女孩,B个男孩。女孩互相都认识,男孩也互相都认识。部分女孩和男孩互相认识。问最多有多少人两两都认识。
分析:如果把互相认识的人之间连一条边,得到一个图G。对于图G的逆图G',发现是一个二分图。其中的边表示两人不认识。那么问题就转化为求最多有多少个点,任意两点之间不相邻(认识),即最大独立集问题。
最大独立集=顶点数-最大匹配数
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;bool Map[205][205],T[205];int Left[205],G,B;int match(int u){ for(int i=1;i<=B;++i){ if(Map[u][i]&&!T[i]){ T[i]=1; if(!Left[i]||match(Left[i])){ Left[i]=u; return 1; } } } return 0;}int main(){ int M,ca=1,i,j,x,y; while(cin>>G>>B>>M){ if(!G&&!B&&!M) break; for(i=1;i<=G;++i) for(j=1;j<=B;++j) Map[i][j]=1; for(i=1;i<=M;++i){ scanf("%d%d",&x,&y); Map[x][y]=0; } memset(Left,0,sizeof(Left)); int ans=0; for(i=1;i<=G;++i){ memset(T,0,sizeof(T)); ans+=match(i); } printf("Case %d: %d\n",ca++,B+G-ans); } return 0;}
0 0
- POJ 3692 Kindergarten ( 最大独立点集 )
- POJ 3692 Kindergarten(最大独立集)
- POJ 3692 Kindergarten (最大独立集)
- POJ 3692 Kindergarten(最大独立集)
- poj 3692 Kindergarten (最大独立集)
- POJ 3692 Kindergarten(最大独立集)
- poj--3692--Kindergarten(最大独立集)
- POJ 3692 Kindergarten (最大独立集)
- POJ-3692Kindergarten,求最大独立集!
- POJ 3692 Kindergarten(最大独立集)
- poj 3692 二分图最大独立集 Kindergarten
- poj 3692 Kindergarten 二分图 最大独立集
- POJ 3692 - Kindergarten 二分图的最大独立点集
- Poj 3692 Kindergarten 二分图最大独立点集
- POJ 3692 Kindergarten 最大团->最大独立集
- poj 3692 Kindergarten(二分图匹配,最大独立集)
- POJ 3692 Kindergarten 二分图最大独立集
- POJ 题目3692 Kindergarten(最大独立集)
- 对话框容器环境响应Active控件事件 动态创建ActiveX
- 实现用代码修改图片来进行屏幕适配
- C#基础总结
- 【从零单排之微软面试100题系列】05之查找最小的k个元素
- Android studio 多渠道打包
- poj 3692 Kindergarten (最大独立集)
- 如何Android中自定义Navigationbar
- Android面试总结
- Android全局异常处理(捕获异常,不弹出程序崩溃)
- 从权限管理看互联网产品的盈利方式
- 【网络流】 HDOJ 4307 Matrix
- LeetCode100 SameTree java题解
- C++对象在内存中的分布
- Wildcard Matching 字符串含?,*匹配