hihoCoder #1127:二分图最小点覆盖和最大独立集
题目大意:求二分图最小点覆盖和最大独立集。
题目分析:如果选中一个点,那么与这个点相连的所有边都被覆盖,使所有边都被覆盖的最小点集称为最小点覆盖,它等于最大匹配;任意两个点之间都没有边相连的最大点集称为最大独立集,它等于总节点数减去最大匹配数。
代码如下:
# include<iostream>
# include<cstdio>
# include<cmath>
# include<vector>
# include<list>
# include<queue>
# include<map>
# include<set>
# include<cstring>
# include<algorithm>
using namespace std; const int N=1000;
const int INF=1000000000;
const double inf=1e20; int n,m;
int link[N+5];
vector<int>e[N+5];
int mark[N+5]; bool match(int x)
{
for(int i=0;i<e[x].size();++i){
int y=e[x][i];
if(mark[y]) continue;
mark[y]=1;
if(link[y]==-1||match(link[y])){
link[y]=x;
return true;
}
}
return false;
} int main()
{
while(~scanf("%d%d",&n,&m))
{
for(int i=0;i<n;++i) e[i].clear();
int a,b;
while(m--)
{
scanf("%d%d",&a,&b);
--a,--b;
e[a].push_back(b);
e[b].push_back(a);
}
int cnt=0;
memset(link,-1,sizeof(link));
for(int i=0;i<n;++i){
memset(mark,0,sizeof(mark));
if(match(i)) ++cnt;
}
cnt/=2;
printf("%d\n%d\n",cnt,n-cnt);
}
return 0;
}
hihoCoder #1127:二分图最小点覆盖和最大独立集的更多相关文章
- hihoCoder #1127 : 二分图二·二分图最小点覆盖和最大独立集
		#1127 : 二分图二·二分图最小点覆盖和最大独立集 Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB 描述 在上次安排完相亲 ... 
- HihoCoder1127 二分图三·二分图最小点覆盖和最大独立集
		二分图三·二分图最小点覆盖和最大独立集 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上次安排完相亲之后又过了挺长时间,大家好像都差不多见过面了.不过相亲这个事不是说 ... 
- hihoCoder#1127 二分图三·二分图最小点覆盖和最大独立集
		原题地址 主要是介绍了两个定理: 1. 二分图最大匹配数 = 二分图最小点覆盖数 2. 二分图最小点覆盖数 = 二分图顶点数 - 二分图最小点覆盖数 注意,都是二分图 代码:(匈牙利算法) #i ... 
- POJ2226 Muddy Fields(二分图最小点覆盖集)
		题目给张R×C的地图,地图上*表示泥地..表示草地,问最少要几块宽1长任意木板才能盖住所有泥地,木板可以重合但不能盖住草地. 把所有行和列连续的泥地(可以放一块木板铺满的)看作点且行和列连续泥地分别作 ... 
- POJ1325 Machine Schedule(二分图最小点覆盖集)
		最小点覆盖集就是在一个有向图中选出最少的点集,使其覆盖所有的边. 二分图最小点覆盖集=二分图最大匹配(二分图最大边独立集) 这题A机器的n种模式作为X部的点,B机器的m种模式作为Y部的点: 每个任务就 ... 
- [POJ] 2226 Muddy Fields(二分图最小点覆盖)
		题目地址:http://poj.org/problem?id=2226 二分图的题目关键在于建图.因为“*”的地方只有两种木板覆盖方式:水平或竖直,所以运用这种方式进行二分.首先按行排列,算出每个&q ... 
- 二分图 最小点覆盖 poj 3041
		题目链接:Asteroids - POJ 3041 - Virtual Judge https://vjudge.net/problem/POJ-3041 第一行输入一个n和一个m表示在n*n的网格 ... 
- 四川第七届 D Vertex Cover(二分图最小点覆盖,二分匹配模板)
		Vertex Cover frog has a graph with nn vertices v(1),v(2),…,v(n)v(1),v(2),…,v(n) and mm edges (v(a1), ... 
- 树的问题小结(最小生成树、次小生成树、最小树形图、LCA、最小支配集、最小点覆盖、最大独立集)
		树的定义:连通无回路的无向图是一棵树. 有关树的问题: 1.最小生成树. 2.次小生成树. 3.有向图的最小树形图. 4.LCA(树上两点的最近公共祖先). 5.树的最小支配集.最小点覆盖.最大独立集 ... 
随机推荐
- MSP430x1_4_6x之问题总结
			01:MSP430端口上电复位的初始值是不确定的:所以使用是都要初始化:比如加下面的语句或者加你使用的端口就行了: /*下面六行程序关闭所有的IO口*/ P1DIR = 0XFF;P1OUT ... 
- [C/C++]数据类型与变量
			1.类型: 1.1.简介 1.1.1.基本类型(base type)和复合类型(compound type): 复合类型是指基于其它类型定义的类型.([1].2.3 p45)那么基本类型就是复合类型基 ... 
- Visual Studio安装卸载模板
			Visual Studio中有两种类型的模板:项目模板和项模板 一.已安装模板: 默认情况下,与产品一起安装的模板位于以下位置: ①\<Visual Studio 安装目录>\Common ... 
- python常见错误总结
			TypeError: 'module' object is not callable 模块未正确导入,层级关系没找对 缩进错误. IndentationError: unindent does not ... 
- POJ 2185  -  Milking Grid (二维KMP)
			题意:给出一个字符矩形,问找到一个最小的字符矩形,令它无限复制之后包含原来的矩形. 此题用KMP+枚举来做. 一维的字符串匹配问题可以用KMP来解决.但是二维的就很难下手.我们可以将二维问题转化为一维 ... 
- hdu 2092
			Ps:wa了两次....一次是从加法那边暴力,然而算法错误..应该从乘法那边暴力破解...然而又没算负数..加上负数..直接暴力AC. 代码: #include "stdio.h" ... 
- hdu 2060
			ps:天了噜...WA了无数次...结果就是粗心了...先是YES和Yes的错,再后来是运算的错....想死 题意:先给出N,接下来是N个数据,给出a,b,c,分别是桌面剩下的球数,p的分数,q的分数 ... 
- Motorola C118修改滤波器组件
			所需工具: 热风枪.恒温焊台.镊子.助焊膏.锡丝.滤波器组件 关于怎么使用热风枪拆屏蔽盖将在后期更新视频,以下为修改滤波器流程.以下热风枪设置温度只针对快克957DW(不同品牌风枪和型号可能会有温差) ... 
- POJ 2436 二进制枚举+位运算
			题意:给出n头牛的得病的种类情况,一共有m种病,要求找出最多有K种病的牛的数目: 思路:二进制枚举(得病处为1,否则为0,比如得了2 1两种病,代号就是011(十进制就是3)),首先枚举出1的个数等于 ... 
- HDU 5253  最小生成树(kruskal)+ 并查集
			题目链接 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> ... 
