题意:

有一个城镇,它的所有街道都是单行(即有向)的,并且每条街道都是和两个路口相连。同时已知街道不会形成回路。

可以在任意一个路口放置一个伞兵,这个伞兵会顺着街道走,依次经过若干个路口。

问最少需要投放几个伞兵,使得每个路口都被伞兵拜访过。并且要满足每个路口只能被一个伞兵拜访过。

思路:

裸DAG图的最小路径覆盖。

DAG图的最小路径覆盖数 = 节点数 - 二分图最大匹配

代码:

  1. vector<int> graph[125];
  2. int cx[125],cy[125];
  3. bool bmask[125];
  4. int n,m;
  5.  
  6. int findPath(int u){
  7. int L=graph[u].size();
  8. rep(i,0,L-1){
  9. int v=graph[u][i];
  10. if(!bmask[v]){
  11. bmask[v]=true;
  12. if(cy[v]==-1||findPath(cy[v])){
  13. cy[v]=u;
  14. cx[u]=v;
  15. return 1;
  16. }
  17. }
  18. }
  19. return 0;
  20. }
  21. int MaxMatch(){
  22. int ans=0;
  23. rep(i,1,n) cx[i]=cy[i]=-1;
  24. rep(i,1,n) if(cx[i]==-1){
  25. mem(bmask,false);
  26. ans+=findPath(i);
  27. }
  28. return ans;
  29. }
  30.  
  31. int T;
  32. int main(){
  33. cin>>T;
  34. while(T--){
  35. scanf("%d",&n);
  36. rep(i,1,n) graph[i].clear();
  37. scanf("%d",&m);
  38. while(m--){
  39. int a,b;
  40. scanf("%d%d",&a,&b);
  41. graph[a].push_back(b);
  42. }
  43. int dd=MaxMatch();
  44. printf("%d\n",n-dd);
  45. }
  46. }

POJ 1442 Air Raid(DAG图的最小路径覆盖)的更多相关文章

  1. POJ 1422 Air Raid(二分图匹配最小路径覆盖)

    POJ 1422 Air Raid 题目链接 题意:给定一个有向图,在这个图上的某些点上放伞兵,能够使伞兵能够走到图上全部的点.且每一个点仅仅被一个伞兵走一次.问至少放多少伞兵 思路:二分图的最小路径 ...

  2. poj 2060 Taxi Cab Scheme(DAG图的最小路径覆盖)

    题意: 出租车公司有M个订单. 订单格式:     hh:mm  a  b  c  d 含义:在hh:mm这个时刻客人将从(a,b)这个位置出发,他(她)要去(c,d)这个位置. 规定1:从(a,b) ...

  3. hdu1151 Air Raid,DAG图的最小路径覆盖

    点击打开链接 有向无环图的最小路径覆盖 = 顶点数- 最大匹配 #include <queue> #include <cstdio> #include <cstring& ...

  4. UVALive - 7368 Airports DAG图的最小路径覆盖

    题目链接: http://acm.hust.edu.cn/vjudge/problem/356788 Airports Time Limit: 3000MS 问题描述 An airline compa ...

  5. Air Raid POJ - 1422 【有向无环图(DAG)的最小路径覆盖【最小不相交路径覆盖】 模板题】

    Consider a town where all the streets are one-way and each street leads from one intersection to ano ...

  6. hdu - 1151 Air Raid(有向无环图的最小路径覆盖)

    http://acm.hdu.edu.cn/showproblem.php?pid=1151 在一个城市里有n个地点和k条道路,道路都是单向的,并且不存在环.(DAG) 现在伞兵需要去n个地点视察,伞 ...

  7. 有向无环图(DAG)的最小路径覆盖(转)

    DAG的最小路径覆盖 定义:在一个有向图中,找出最少的路径,使得这些路径经过了所有的点. 最小路径覆盖分为最小不相交路径覆盖和最小可相交路径覆盖. 最小不相交路径覆盖:每一条路径经过的顶点各不相同.如 ...

  8. 有向无环图(DAG)的最小路径覆盖

    DAG的最小路径覆盖 定义:在一个有向图中,找出最少的路径,使得这些路径经过了所有的点. 最小路径覆盖分为最小不相交路径覆盖和最小可相交路径覆盖. 最小不相交路径覆盖:每一条路径经过的顶点各不相同.如 ...

  9. POJ 3020 Antenna Placement【二分匹配——最小路径覆盖】

    链接: http://poj.org/problem?id=3020 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...

随机推荐

  1. 【OI技巧】解决cin、cout因输入输出慢而TLE的问题

    语言本身没有问题!! 语言本身没有问题!! 语言本身没有问题!! C++本来的设计就是将输入输出流和C的标准输入输出挂钩在一起,这样就导致cin,cout输入输出前先要将内容放入缓冲区,最后再由cin ...

  2. Java项目常用的统一返回跟统一异常处理

    先创建一个crud的项目. controller调用service调用mapper 以下以简单代码代替 controller @GetMapping("/getUserById") ...

  3. javascript 定时器 timer setTimeout setInterval (js for循环如何等待几秒再循环)

    实现一个打点计时器,要求1.从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 12.返回的对象中需要包含一个 cance ...

  4. centos7安装部署SVN

      SVN介绍 SVN是个自由.开源的版本控制系统,绝大多数开源软件都使用SVN作为代码版本管理软件. SVN的官方网站http://subversion.apache.org/.目前SVN在开源社区 ...

  5. python实现查找图片相同的id及重复个数

    import os #os:操作系统相关的信息模块 import random #导入随机函数 #存放原始图片地址 data_base_dir = r"C:\Users\Administra ...

  6. [转载]SELinux安全系统基础

    链接:http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/26/3100444.html 本篇随笔将记录一下学习SELinux的一些心得与体 ...

  7. P3306-[SDOI2013]随机数生成器【BSGS】

    正题 题目链接:https://www.luogu.com.cn/problem/P3306 题目大意 给出一个\(p,a,b,x_1,t\),有\(x_i=ax_{i-1}+b\) 求一个最小的\( ...

  8. oracle常见命令

    1.权限 (1)系统权限 系统权限是指对数据库系统的权限和对象结构控制的权限. 如grant create session to 用户名 -赋予用户登录的权限 (2)对象权限 访问其它用户对象的权利 ...

  9. 在昨天夜黑风高的晚上,我偷了隔壁老王的Python入门课件,由浅入深堪称完美!

    隔壁老王是一个资深码农,就业教育事业的秃顶之才昨天我下楼打酱油,看他迎面走来,满目春光我好奇的问道:老王,有什么好事,隔壁小花叫你上门了吗?老王:秘密!!我心想:哎呦~不错啊半晚之时,连猫狗都睡着了, ...

  10. python编写学习助手0

    项目原因 为了解决学习知识后不及时复习而导致遗忘的问题,准备写一个桌面助手,采用艾宾浩斯记忆法,对每次学习的内容排布复习计划. 第一步是做出最简单的文本列表,里面是待办事项,每个复习待办事项都会有符合 ...