题目链接:点击查看

题目大意:给出一个有向图,现在需要在不同的地方空降伞兵,保证所有伞兵沿着道路可以走完所有城市,求出最少伞兵的数量

题目分析:我们的目的是要用最少的路径覆盖所有顶点,换句话说就是二分图的最小路径覆盖,公式是:

顶点数-最大匹配数

匈牙利跑一边直接出答案了

自从接触了最小点覆盖和最小路径覆盖之后就有点混淆的感觉了,这里在整理一下

最小点覆盖:给定一张二分图,求出一个最小的点集S,使得图中任意一条边都有至少一个端点属于S。

最小路径覆盖:给定一张有向无环图,要求用尽量少的不相交的简单路径,覆盖有向无环图的所有顶点(也就是每个顶点恰好被覆盖一次)。特别的,每个点自己也可以称为是路径覆盖,只不过路径的长度是0。

代码:

#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=150;int n,m;bool maze[N][N];int match[N];bool vis[N];bool dfs(int x)
{for(int i=1;i<=n;i++){if(maze[x][i]&&!vis[i]){vis[i]=true;if(!match[i]||dfs(match[i])){match[i]=x;return true;}}}return false;
}void init()
{memset(match,0,sizeof(match));memset(maze,false,sizeof(maze));
}int main()
{
//  freopen("input.txt","r",stdin);
//  ios::sync_with_stdio(false);int w;cin>>w;while(w--){scanf("%d%d",&n,&m);init();while(m--){int u,v;scanf("%d%d",&u,&v);maze[u][v]=true;}int ans=n;for(int i=1;i<=n;i++){memset(vis,false,sizeof(vis));if(dfs(i))ans--;}printf("%d\n",ans);}return 0;
}

HDU - 1151 Air Raid(最小路径覆盖-二分图最大匹配)相关推荐

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

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

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

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

  3. POJ - 2594 Treasure Exploration(最小路径覆盖-二分图最大匹配+传递闭包)

    题目链接:点击查看 题目大意:给出一个有向图,现在需要让最少的机器人沿着图遍历所有点,求出最少需要机器人的数量,注意每个点可以重复遍历 题目分析:因为要遍历所有点,所以还是变成了二分图的最小路径覆盖问 ...

  4. UVALive - 3126 Taxi Cab Scheme(最小路径覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:有n个人要坐出租车,每个人上车的时间已知,规定出租车必须在每个人上车之前的一分钟之前到达这个人的位置,之后给出每个人的当前坐标以及需要达到的目的地坐标,行驶完该段路程的时 ...

  5. POJ - 3020 Antenna Placement(最小路径覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:给出一个n*m的地图,图中'o'代表空地,'*'代表城市,现在需要给城市装无线网,每个无线网最多可以覆盖相邻的两个城市,问覆盖所有的城市最少需要装多少个无线网 题目分析: ...

  6. HDU 1151 Air Raid

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

  7. 有向图最小路径覆盖方法浅析、证明 //hdu 3861

    路径覆盖就是在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联. 对于一个有向无环图怎么求最小路径覆盖? 先构造二分图: 对于原图,先拆点,吧每个点i拆成ii,iii. ...

  8. 二分图专题系列各大知识点总结(匈牙利,染色法,最大独立集,最小点覆盖,最小路径覆盖)

    本文概论 二分图的判断方法:图中不存在奇数环----->染色法判断二分图不存在矛盾 二分图: 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i, ...

  9. 二分图大讲堂——彻底搞定最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖、带权最优匹配

    二分图匹配 二分图大讲堂--彻底搞定最大匹配数(最小覆盖数).最大独立数.最小路径覆盖.带权最优匹配(转) 文本内容框架: §1图论点.边集和二分图的相关概念和性质 §2二分图最大匹配求解 匈牙利算法 ...

最新文章

  1. ISME:基因组和转录组分析深海古菌Thermoprofundales
  2. 关于python中程序流程结构-Python语言程序设计(第4章:程序结构设计)
  3. android studio 中 .9.png的制作
  4. java用中点画圆法_OpenGL通过中点法绘制直线和圆
  5. Spring Boot:Exception parsing document: template=index, line 7 - column 3
  6. 无线策略服务器,无线网络中的分布式资源管理策略研究
  7. java json 替换属性值_替换JSONObject某个对象的值
  8. Win10开启IPv6
  9. 移动互联网时代的营销
  10. ad6怎么画电阻_光敏电阻传感器的使用
  11. sql 查询结果随机排序
  12. C#——NotifyICON的使用
  13. 趣头条投放广告需要哪些资质?趣头条推广广告怎么样搭建账户?
  14. SQL Server 由于一个或多个对象访问此列,ALTER TABLE DROP COLUMN xxx 失败问题解决
  15. 【已解决】Win10系统点击ikbc机械键盘win键无效的解决方法
  16. kityminder-editor 百度脑图与my-mind 使用体验
  17. 下载webStorm,nodejs,git并简单配置,为JavaScript做准备
  18. 实验1 蓝桥ROS1机器人入门 适用kinetic/melodic/noetic
  19. 计算机数据的发展阶段,计算机数据存储介质的发展阶段
  20. 小程序实现商品详情页的tap标签与页面滚动联动效果

热门文章

  1. MySQL服务的启动与停止-使用命令行工具
  2. Gateway网关-快速入门
  3. JdbcTemplate和NamedParameterJdbcTemplate
  4. RocketMQ消息支持的模式-消息同步发送
  5. 循环尝试,不释放CPU
  6. 常用的函数式接口_Supplier接口
  7. ES6新特性之字符串扩展
  8. 函数的参数-在函数内部使用方法修改可变参数会影响外部实参
  9. 并发调试和JDK8新特性
  10. Zookeeper_安全认证讲解