原题传送:http://acm.hdu.edu.cn/showproblem.php?pid=1151

  DAG图的最小路径覆盖数 = 节点数(n)- 最大匹配数(m)

   所以,关键是求二分图的最大匹配数,上匈牙利就行了。

View Code

 1 #include <iostream>
 2 #include <string.h>
 3 #include <cstdio>
 4 using namespace std;
 5
 6 const int M=120 + 2;
 7 bool g[M][M],visit[M];
 8 int  link[M],m,n,k;
 9
10 bool find(int i)
11 {
12     int j;
13     for(j=1;j<=n;j++)
14     {
15         if(g[i][j] && !visit[j])
16         {
17             visit[j]=true;
18             if(!link[j] || find(link[j]))
19             {
20                 link[j]=i;
21                 return true;
22             }
23         }
24     }
25     return false;
26 }
27
28 int main()
29 {
30     int i,j,res,T;
31     cin >> T;
32     while(T --)
33     {
34         cin >> n >> m;
35         memset(g,false,sizeof(g));
36         memset(link,false,sizeof(link));
37         for(int k = 0; k < m; k ++)
38         {
39             cin>>i>>j;
40             g[i][j]=true;
41         }
42         for(res=0,i=1;i<=n;i++)
43         {
44             memset(visit,0,sizeof(visit));
45             if(find(i))
46                 res++;
47         }
48         cout<<n-res<<endl;
49     }
50     return 0;
51 }

  

转载于:https://www.cnblogs.com/huangfeihome/archive/2012/11/24/2785672.html

HDU1151 Air Raid相关推荐

  1. HDU-1151 Air Raid

    给定一个有向无环图[DAG图] 求最小路径覆盖... 每个店出入分离成两个点,然后求二分图的最大匹配,最小路径覆盖=总点数-最大匹配数 #include <cstdlib> #includ ...

  2. (hdu step 6.3.3)Air Raid(最小路径覆盖:求用最少边把全部的顶点都覆盖)

    题目: Air Raid Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  3. 随便听听 Day 2:US ‘smart bombs‘ hit an Iraqi air raid shelter.

    随便听听 Day 2:US 'smart bombs' hit an Iraqi air raid shelter. sortie 架次(军用的飞机或者船只) civil defence 民防 dra ...

  4. HDU - 1151 Air Raid(最小路径覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:给出一个有向图,现在需要在不同的地方空降伞兵,保证所有伞兵沿着道路可以走完所有城市,求出最少伞兵的数量 题目分析:我们的目的是要用最少的路径覆盖所有顶点,换句话说就是二分 ...

  5. POJ 1422 Air Raid (最小路径覆盖)

    题意 给定一个有向图,在这个图上的某些点上放伞兵,可以使伞兵可以走到图上所有的点.且每个点只被一个伞兵走一次.问至少放多少伞兵. 思路 裸的最小路径覆盖. °最小路径覆盖 [路径覆盖]在一个有向图G( ...

  6. POJ 1422 Air Raid

    二分图的最少边匹配,即找出最少的边可以覆盖所有的点.用匈牙利算法找出最大匹配,则最终结果为:ans = 图的顶点数 - 最大匹配. 代码如下: 1 #include<iostream> 2 ...

  7. HDU 1151 Air Raid

    DAG的最小路径覆盖 #include<stdio.h> #include<iostream> #include<algorithm> #include<st ...

  8. hdu1151Air Raid poj2594Treasure Exploration题解

    Air Raid 题目的意思就是给一个有向无环图,求从最少的点出发,不能重复的走完所有点.其实就是有向无环图的最小路径覆盖. 有向无环图的最小路径覆盖=节点数-匹配数(拆点) //建图,有向无环图的最 ...

  9. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

最新文章

  1. 这本书让我摆脱了被数学支配的恐惧!
  2. MySQL-通过MaxScale实现读写分离初探
  3. WPF中设置了WindowStyle=None后,窗口仍然有边框的解决方法
  4. P2617 Dynamic Rankings(整体二分)
  5. html5 dropdownlist,使用HTML5 FindByValue下拉列表(html5 dropdownlist using F
  6. 程序员面试金典——4.7最近公共祖先
  7. 添加谷歌账户显示与服务器,解决添加google同步帐户出错竟然可以这般简单!
  8. CentosRedhat下bcm43142博通无线网卡linux驱动之二
  9. 欢迎来到Wagtail的文档
  10. 多线程学习-基础( 十)一个synchronized(){/*代码块*/}简单案例分析
  11. win10服务器网页打不开怎么办,win10系统浏览器网页打不开的解决技巧
  12. Android案例手册 - Android Studio连接夜神模拟器和逍遥模拟器
  13. 人工智能导论 第二章 搜索技术
  14. 有保证的复制消除(Guaranteed Copy Elision)
  15. HDU-6555-The Fool(整除分块)
  16. ng 无法加载文件 C:\Users\hl\AppData\Roaming\npm\ng.ps1 解决方法
  17. 文献检索是利用计算机对文献,《文献检索与利用》教学大纲(文)
  18. 计蒜客题解——T1414:抠图
  19. C语言C程序的构成,C语言程序的构成.doc
  20. Ubuntu下jperf的安装

热门文章

  1. ASP.NET经典How to do文章汇总
  2. Python的open函数文件读写线程不安全,logging模型文件读写线程安全!
  3. bat 批量提取指定目录下的文件
  4. java创建文件和目录
  5. WIN7安装及配置JDK
  6. twitter 监控登陆活动
  7. Java中关于==和equal的区别 以及equals()方法重写
  8. c#中获取服务器IP,客户端IP以及其它
  9. 计算机word考试试题答案,计算机word考试-试题1(附答案解析).doc
  10. gz键盘增强小工具_这些不起眼的Mac小工具,能让你的Macbook效率倍增!