HDU1054+最小顶点覆盖
/* 最小顶点覆盖:选出最少的点,这些点的关联的边都被覆盖 最小顶点覆盖等于最大匹配*/ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<iostream> #include<algorithm> #include<queue> #include<map> #include<math.h> using namespace std; const int maxn = 1505; const int inf = 0x7fffffff; struct node{int u,val,next; }edge[ maxn<<2 ]; int head[ maxn ],vis[ maxn ],fa[ maxn ]; int cnt; void init(){memset( head,-1,sizeof(vis) );memset( fa,-1,sizeof(fa) );cnt=0; } void addedge( int a,int b,int c ){edge[ cnt ].u=b;edge[ cnt ].val=c;edge[ cnt ].next=head[ a ];head[ a ]=cnt++; }int dfs( int x ){ // int u=head[ x ];for( int i=head[ x ];i!=-1;i=edge[i].next ){int u=edge[ i ].u;if( vis[ u ]==0 ){vis[ u ]=1;if( fa[ u ]==-1 || dfs( fa[u] ) ){fa[ u ]=x;return 1;}}}return 0; }int main(){int n;while( scanf("%d",&n)!=EOF ){char s[ 2001 ];init();for( int i=0;i<n;i++ ){int a,b,c;int tmp;scanf("%d:(%d)",&a,&tmp);while( tmp-- ){scanf("%d",&b);addedge( a,b,1 );addedge( b,a,1 );}}int ans=0;for( int i=0;i<n;i++ ){if( head[ i ]==-1 ) continue;memset( vis,0,sizeof(vis) );ans+=dfs( i );}printf("%d\n",ans/2);}return 0; }
转载于:https://www.cnblogs.com/xxx0624/archive/2012/12/09/2810004.html
HDU1054+最小顶点覆盖相关推荐
- hdu1054(最小顶点覆盖)
传送门:Strategic Game 题意:用尽量少的顶点来覆盖所有的边. 分析:最小顶点覆盖裸题,最小顶点覆盖=最大匹配数(双向图)/2. #include <cstdio> #incl ...
- 最大匹配、最小顶点覆盖、最大独立集、最小路径覆盖(转)
在讲述这两个算法之前,首先有几个概念需要明白: 二分图: 二分图又称二部图,是图论中的一种特殊模型.设G=(V,E)是一个无向图,如果顶点V可以分割为两个互不相交的子集(A,B),并且图中的每条边( ...
- poj2226(最小顶点覆盖)
(相当于是poj3041的进阶版,不过难度还好) 题目大概意思为将一个矩阵中的泥泞部分给覆盖起来,可以横着覆盖也可以竖着覆盖,但不能覆盖到其他草地部分,覆盖的板子长度随意,宽度为1,可以重复覆盖,求最 ...
- [poj3041]Asteroids(二分图的最小顶点覆盖)
题目大意:$N*N$的网格中有$n$颗行星,若每次可以消去一整行或一整列,求最小的攻击次数使得消去所有行星. 解题关键:将光束当做顶点,行星当做连接光束的边建图,题目转化为求该图的最小顶点覆盖,图的最 ...
- POJ3041 最小顶点覆盖
题意: 给你一个n * n 的矩阵,和X所在的坐标,问你最少放多少个**可以把图里的所有X都覆盖,每个**可以覆盖一行,或者一列. 思路: 最小顶点覆盖,最小顶点覆盖=二分匹配 ...
- hdu 1054(最小顶点覆盖)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054 思路:最小顶点覆盖 == 最大匹配(双向图)/2...不过一开始是用邻接矩阵,傻傻的TLE... ...
- hdu 1498(二分图最小顶点覆盖)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1498 解题思路: 这题看上去很和二分图的最小顶点覆盖很相似,但关键怎么处理多个不同颜色的气球. 其实就 ...
- 【每日算法】【图论】【最小边覆盖 最小路径覆盖 最小顶点覆盖 最大独立集 最大团】
最小边覆盖 = 最大独立集 = |V| - 最大匹配数 这个是在原图是二分图上进行的 最小路径覆盖和最小边覆盖不同,不要求给的图是二分图,而是要求是N x N的有向图,不能有环,然后根据原图构造二分图 ...
- poj 1325 Machine Schedule 最小顶点覆盖
题意 两个机器A,B, 分别有 N,M个工作模式, K个作业,可以在( Ai, Bj ) 模式下工作. 机器最初在模式0下. 问最小的 切换模式次数. 解题思路 A, B 两个天然二分图顶点集合, ...
最新文章
- oracle12path,Oracle 12c R2 注意事项:login.sql 改变
- 一个.Net Framework下的线程库
- Python学习前期准备---第九天
- PPT 2016 后台播放功能
- 《Java 核心技术卷1 第10版》学习笔记------ 控制可见性的4个访问修饰符详解
- ADI官方源码快速搭建demo工程验证设计的正确性
- STM32使用DMA接收串口数据
- 【转】零拷贝的实现原理
- 开发打开设置洁面_用了两到三年的华为手机,一键打开quot;开发者选项quot;,帮助性能加速...
- 做有中国特色的项目管理
- fedora15下GNOME3使用笔记
- 三维空间点到线段的距离
- oracle自增序列
- PHP实现 鸡兔同笼的问题
- 谷歌负载均衡Maglev实现简析
- 不懂zencart该如何找出路-新手soho建站指南
- js实现23种设计模式
- Cadence OrCad Capture新建工程的方法
- Xampp介绍、安装过程及使用方法
- java:计算自由落体运动中物体的位移
热门文章
- 2020HW必备-蜜罐如何在攻防演练中战术部防
- git clone 所有远程分支
- spark之4:基础指南(源自官方文档)
- 深入理解Spark 2.1 Core (七):Standalone模式任务执行的原理与源码分析
- Spring Cloud原理详解
- Hadoop2.7.6在Windows7单机部署
- Elasticsearch技术解析与实战(三)文档的聚合
- 【原创 HadoopSpark 动手实践 6】Spark 编程实例与案例演示
- asp.net core 系列之webapi集成EFCore的简单操作教程
- 1.	变量提升 2.	条件语句 3.	循环语句 弹出框的三种形式 If条件的种类...