题目链接:点击查看

题目大意:给出一棵树,现在要在节点上放置士兵,每个士兵可以监视与其所在的节点直接相连的节点,问最少需要多少个士兵才能将整棵树都监视到

题目分析:求最少的节点,以保证每条边都有一个端点在所选节点中,这不就是标准的二分图的最小点覆盖,最小点覆盖等于二分图最大匹配数,对于这个题目而言我们需要建立无向图,所以最后答案记得除以2

代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=2e3+100;vector<int>node[N];int match[N],vis[N],vis_cnt;bool dfs(int x)
{for(auto i:node[x]){if(vis[i]!=vis_cnt){vis[i]=vis_cnt;if(!match[i]||dfs(match[i])){match[i]=x;return true;}}}return false;
}void init()
{vis_cnt=1;for(int i=0;i<N;i++)node[i].clear();memset(vis,0,sizeof(vis));memset(match,0,sizeof(match));
}int main()
{
//  freopen("input.txt","r",stdin);
//  ios::sync_with_stdio(false);int n;while(scanf("%d",&n)!=EOF){init();for(int i=1;i<=n;i++){int u,num;scanf("%d:(%d)",&u,&num);u++;while(num--){int v;scanf("%d",&v);v++;node[u].push_back(v);node[v].push_back(u);}}int ans=0;for(int i=1;i<=n;i++,vis_cnt++)if(dfs(i))ans++;printf("%d\n",ans/2);}return 0;
}

HDU - 1054 Strategic Game(最小点覆盖-二分图最大匹配)相关推荐

  1. HDU - 1150 Machine Schedule(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:现在有一个机器A和一个机器B,A机器有n种模式,B机器有m种模式,现在有k次工作需要完成,每次工作的信息为: id x y:编号为id,在A机器要用x模式完成,在B机器要 ...

  2. HDU 1054 Strategic Game 最小点覆盖

     最小点覆盖概念:选取最小的点数覆盖二分图中的所有边. 最小点覆盖 = 最大匹配数. 证明:首先假设我们求的最大匹配数为m,那么最小点覆盖必然 >= m,因为仅仅是这m条边就至少需要m个点.然后 ...

  3. HDU - 3360 National Treasures(最小点覆盖-二分图最大匹配+奇偶拆点)

    题目链接:点击查看 题目大意:给出一个n*m的矩阵,每个点都有一个权值,-1表示该格子为警卫,否则表示该格子有宝物: 当前点的权值二进制为1的地方代表需要一个警卫(编号为二进制从右往左数的位置),警卫 ...

  4. hdu 1054 Strategic Game 最小点覆盖 = 最大二分匹配

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1054 简单二分匹配,根据题意构造一个无向图.然后求最小点覆盖,然后扫描mark数组将曾经匹配的点所匹配 ...

  5. POJ - 2226 Muddy Fields(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:给出一个n*m的地图,地图中'*'代表泥地,'.'代表空地,现在我们有两种木板,一种可以覆盖一行中的任意长度,我们成为行木板,另一种可以覆盖一列中的任意长度,我们成为列木 ...

  6. POJ - 3041 Asteroids(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目分析:给出一个n*n的矩阵,其中有m个敌人,每一次操作可以清除某一列或某一行中的所有敌人,问若想清除所有敌人,至少需要多少次操作 题目分析:第一次见这种题,就是最小覆盖是要用最 ...

  7. hdu 1054 Strategic Game 二分图最小点覆盖

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054 题意: 给出一个无向图,求最小点覆盖. 思路: 用网络流来做设立一个超级源点和一个超级汇点. 每 ...

  8. HDU——1054 Strategic Game

    Strategic Game Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  9. HDU - 1054 Strategic Game (二分图匹配模板题)

    二分图匹配模板题 #include <bits/stdc++.h> #define FOPI freopen("in.txt", "r", stdi ...

最新文章

  1. 4、Power Map—实例:演示报告封面
  2. pay-as-you-go
  3. Android:数据库增删改查、SQLite、ORM、Cursor
  4. BootStrap轮播图失效
  5. 如何免费试用SAP的Fiori应用
  6. hibernate继承映射之每个具体类一张表
  7. 1.今日标签:视频价值一千字
  8. 三星Galaxy Note系列年底停产:被折叠屏手机/Galaxy S系列取代
  9. 郭明錤对明年新款iPhone卖点进行预测:支持5G 摄像头改进
  10. 微信用户量破6.5亿 首超移动QQ
  11. Win2000自动登陆
  12. php微信投票刷票,微信投票程序源码
  13. js:toastr弹出提示信息
  14. 婚姻中,不去表达爱,比不爱更可怕
  15. echart-pie
  16. MindManager21简体中文永久版思维导图
  17. Android 听筒 扬声器 切换
  18. springboot校园二手书籍交易平台 毕业设计-附源码131558
  19. 鸽巢原理(抽屉原理)
  20. 神经性脚臭案例整理(二)

热门文章

  1. 网页上点击java没反应_JavaScript_javascript:void(0)点击登录没反应怎么解决,巧用批处理解决IE不支持JavaScri - phpStudy...
  2. 搭建K8s集群(二进制方式)-搭建步骤介绍
  3. Spring反转控制
  4. Spring-Cloud组件:eureka
  5. AQS.accquire
  6. Spring 核心和容器的一般更新
  7. SpringMVC的请求-获得请求参数-静态资源访问的开启
  8. SpringMVC的数据响应
  9. 常用的函数式接口_Function接口
  10. GraphQL入门之工程搭建