题意:
      给你一些点,和一些边,如果把一个点安装保护装置,那么与他直接相连的点就可以被保护,题目问的是最少安装多少个点能让所有的点都被保护。

思路:

      这是最基础的二分图最少定点覆盖,对于可以保护的点,我们只要找到最大的匹配次数,也就是最少的安置个数就行了,直接一遍匈牙利,注意的一点是建图的时候记得建双向边,最后答案要除以2,因为a->b b->a 匹配数是2。


#include<stdio.h>
#include<string.h>#define N_node 1550
#define N_edge 2255000

typedef struct
{int to ,next;
}STAR;STAR E[N_edge];
int list[N_node] ,tot;
int mk_dfs[N_node] ,mk_gx[N_node];void add(int a ,int b)
{E[++tot].to = b;E[tot].next = list[a];list[a] = tot;
}int DFS_XYL(int x)
{for(int k = list[x] ;k ;k = E[k].next){int to = E[k].to;if(mk_dfs[to]) continue;mk_dfs[to] = 1;if(mk_gx[to] == -1 || DFS_XYL(mk_gx[to])){mk_gx[to] = x;return 1;}}return 0;
}int main ()
{int n ,i ,ans ,nn ,from ,to;while(~scanf("%d" ,&n)){memset(list ,0 ,sizeof(list)) ,tot = 1;for(i = 1 ;i <= n ;i ++){scanf("%d:(%d)" ,&from ,&nn);while(nn--){scanf("%d" ,&to);add(from + 1 ,to + 1);add(to + 1 ,from + 1);}}memset(mk_gx ,255 ,sizeof(mk_gx));ans = 0;for(i = 1 ;i <= n ;i ++){memset(mk_dfs ,0 ,sizeof(mk_dfs));ans += DFS_XYL(i);}printf("%d\n" ,ans / 2);}return 0;
}

hdu1054 简单最小顶点覆盖相关推荐

  1. hdu1054(最小顶点覆盖)

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

  2. HDU1054+最小顶点覆盖

    View Code /* 最小顶点覆盖:选出最少的点,这些点的关联的边都被覆盖 最小顶点覆盖等于最大匹配*/ #include<stdio.h> #include<stdlib.h& ...

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

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

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

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

  5. poj2226(最小顶点覆盖)

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

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

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

  7. POJ3041 最小顶点覆盖

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

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

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

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

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

最新文章

  1. Ural 1025 Democracy in Danger 解题报告
  2. 安装Oracle9I出现加载数据库时出错:areasQueries错误,提示停止该组件或所有组件安装,之后安装不能进行...
  3. sql数据黑马程序员——SQL入门
  4. clickhouse hadoop_ClickHouse如何实现存算分离?
  5. 1Python全栈之路系列之MySQL数据库基本操作
  6. 2018.3.10 模拟赛——(2)给出字符串
  7. sum 去重_总结leetcode上【排列问题】【组合问题】【子集问题】回溯算法去重的两种写法!...
  8. ELK详解(十七)——filebeat输出到Redis和Elasticsearch实战
  9. idea导入导出 settings 设置文件
  10. 用Python写了一个带界面的聊天室
  11. 中国人大网络教育计算机考试题,第九章计算机多媒体技术20秋人大测试题
  12. 工控蜜罐 Conpot 的进阶玩法
  13. Matlab p文件解密,p转m文件 可查看源码
  14. 安装Centos8设置基础软件仓库时出错
  15. UVA - 10105 Polynomial Coefficients
  16. Android之——流量管理程序示例
  17. 集装箱装柜计算机器在线,集装箱装柜数智能计算表
  18. js入门篇--制作简单闪烁图片
  19. 二进制,十进制,十六进制相互转换(小白友好)
  20. UWP学习(一)--Talking about 5 Controls

热门文章

  1. 机房墙面为什么要做保温?该怎么做?
  2. 基于busybox的Linux小系统制作 (initrd)
  3. android中Logcat的TAG过滤
  4. 中国万网域名注册量动态:12月上旬净增8424个
  5. sybase中游标的使用示例
  6. [WF4.0]工作流设计器Rehosting(一)
  7. Javascript自定义事件功能与用法实例分析
  8. hbase 问题整理
  9. Markov Decision Processes
  10. 软件项目经理需具备什么样的技术水平?