View Code

/*
最小顶点覆盖:选出最少的点,这些点的关联的边都被覆盖
最小顶点覆盖等于最大匹配*/
#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+最小顶点覆盖相关推荐

  1. hdu1054(最小顶点覆盖)

    传送门:Strategic Game 题意:用尽量少的顶点来覆盖所有的边. 分析:最小顶点覆盖裸题,最小顶点覆盖=最大匹配数(双向图)/2. #include <cstdio> #incl ...

  2. 最大匹配、最小顶点覆盖、最大独立集、最小路径覆盖(转)

    在讲述这两个算法之前,首先有几个概念需要明白: 二分图:  二分图又称二部图,是图论中的一种特殊模型.设G=(V,E)是一个无向图,如果顶点V可以分割为两个互不相交的子集(A,B),并且图中的每条边( ...

  3. poj2226(最小顶点覆盖)

    (相当于是poj3041的进阶版,不过难度还好) 题目大概意思为将一个矩阵中的泥泞部分给覆盖起来,可以横着覆盖也可以竖着覆盖,但不能覆盖到其他草地部分,覆盖的板子长度随意,宽度为1,可以重复覆盖,求最 ...

  4. [poj3041]Asteroids(二分图的最小顶点覆盖)

    题目大意:$N*N$的网格中有$n$颗行星,若每次可以消去一整行或一整列,求最小的攻击次数使得消去所有行星. 解题关键:将光束当做顶点,行星当做连接光束的边建图,题目转化为求该图的最小顶点覆盖,图的最 ...

  5. POJ3041 最小顶点覆盖

    题意:       给你一个n * n 的矩阵,和X所在的坐标,问你最少放多少个**可以把图里的所有X都覆盖,每个**可以覆盖一行,或者一列. 思路:       最小顶点覆盖,最小顶点覆盖=二分匹配 ...

  6. hdu 1054(最小顶点覆盖)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054 思路:最小顶点覆盖 == 最大匹配(双向图)/2...不过一开始是用邻接矩阵,傻傻的TLE... ...

  7. hdu 1498(二分图最小顶点覆盖)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1498 解题思路: 这题看上去很和二分图的最小顶点覆盖很相似,但关键怎么处理多个不同颜色的气球. 其实就 ...

  8. 【每日算法】【图论】【最小边覆盖 最小路径覆盖 最小顶点覆盖 最大独立集 最大团】

    最小边覆盖 = 最大独立集 = |V| - 最大匹配数 这个是在原图是二分图上进行的 最小路径覆盖和最小边覆盖不同,不要求给的图是二分图,而是要求是N x N的有向图,不能有环,然后根据原图构造二分图 ...

  9. poj 1325 Machine Schedule 最小顶点覆盖

    题意 两个机器A,B, 分别有 N,M个工作模式, K个作业,可以在( Ai, Bj ) 模式下工作. 机器最初在模式0下. 问最小的 切换模式次数. 解题思路 A, B 两个天然二分图顶点集合,   ...

最新文章

  1. oracle12path,Oracle 12c R2 注意事项:login.sql 改变
  2. 一个.Net Framework下的线程库
  3. Python学习前期准备---第九天
  4. PPT 2016 后台播放功能
  5. 《Java 核心技术卷1 第10版》学习笔记------ 控制可见性的4个访问修饰符详解
  6. ADI官方源码快速搭建demo工程验证设计的正确性
  7. STM32使用DMA接收串口数据
  8. 【转】零拷贝的实现原理
  9. 开发打开设置洁面_用了两到三年的华为手机,一键打开quot;开发者选项quot;,帮助性能加速...
  10. 做有中国特色的项目管理
  11. fedora15下GNOME3使用笔记
  12. 三维空间点到线段的距离
  13. oracle自增序列
  14. PHP实现 鸡兔同笼的问题
  15. 谷歌负载均衡Maglev实现简析
  16. 不懂zencart该如何找出路-新手soho建站指南
  17. js实现23种设计模式
  18. Cadence OrCad Capture新建工程的方法
  19. Xampp介绍、安装过程及使用方法
  20. java:计算自由落体运动中物体的位移

热门文章

  1. 2020HW必备-蜜罐如何在攻防演练中战术部防
  2. git clone 所有远程分支
  3. spark之4:基础指南(源自官方文档)
  4. 深入理解Spark 2.1 Core (七):Standalone模式任务执行的原理与源码分析
  5. Spring Cloud原理详解
  6. Hadoop2.7.6在Windows7单机部署
  7. Elasticsearch技术解析与实战(三)文档的聚合
  8. 【原创 HadoopSpark 动手实践 6】Spark 编程实例与案例演示
  9. asp.net core 系列之webapi集成EFCore的简单操作教程
  10. 1. 变量提升 2. 条件语句 3. 循环语句 弹出框的三种形式 If条件的种类...