题目链接:点击查看

题目大意:给出一个有向图,现在需要让最少的机器人沿着图遍历所有点,求出最少需要机器人的数量,注意每个点可以重复遍历

题目分析:因为要遍历所有点,所以还是变成了二分图的最小路径覆盖问题,但这个题不太一样的地方就是每个点可以重复经过,这又和最小路径覆盖问题的定义有了冲突,我们可以重新建图,用floyd闭包传递一下每个点之间的联通关系,这样用新边就可以直接套公式了,我不会证明,但仔细想一想还是有点道理的

代码:

#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=510;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);while(scanf("%d%d",&n,&m)!=EOF&&n+m){init();while(m--){int u,v;scanf("%d%d",&u,&v);maze[u][v]=true;}for(int k=1;k<=n;k++)//闭包传递for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)maze[i][j]|=maze[i][k]&maze[k][j];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;
}

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

  1. poj 2594 Treasure Exploration 最小路径覆盖

    题目链接:http://poj.org/problem?id=2594 建图很重要!!! 大致题意: 给出一个由n个顶点m条边组成的有向无环图.求最少可以同时存在多少路径,使得这些路径可以覆盖所有的点 ...

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

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

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

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

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

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

  5. POJ 2594 Treasure Exploration (可相交最小路径覆盖)

    题意 给你张无环有向图,问至少多少条路径能够覆盖该图的所有顶点--并且,这些路径可以有交叉. 思路 不是裸的最小路径覆盖,正常的最小路径覆盖中两个人走的路径不能有重复的点,而本题可以重复. 当然我们仍 ...

  6. poj 2594 Treasure Exploration

    Treasure Exploration Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 6284   Accepted: 2 ...

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

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

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

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

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

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

最新文章

  1. Docker 制作镜像-redis
  2. 时间自适应卷积:比自注意力更快的特征提取器
  3. CMake基础 第5节 安装项目
  4. Python 进程池 multiprocessing.Pool - Python零基础入门教程
  5. 网络适配器网卡驱动错误代码56解决
  6. Tracup|远程办公,为什么会让管理者抓狂?
  7. Kicad改主题 层颜色 (护眼黑底 层颜色类似立创EDA 或者Altium Designer)
  8. 智慧城市建设,目前所面临的技术瓶颈是什么?
  9. converting to execution character set: Illegal byte sequence
  10. SCCM 2012 R2部署,先决条件(二)
  11. 超级计算机神威太湖之光图片,超级计算机“神威·太湖之光”世界最快
  12. 奥比中光(Deeyea)配置树莓派
  13. 如何培养自己的幽默感
  14. ISO/IEC 27001:2013 版变化
  15. linux查看和结束进程,Linux查看和结束进程命令详解
  16. 苹果美区app内购方法及经验
  17. Java - 关于 javadoc 命令的教辅
  18. Dijkstra算法 迪杰斯特拉算法 单源最短路径
  19. 高级信息系统项目管理(高项 软考)原创论文项目背景合集
  20. 含文档+PPT+源码等]精品基于Nodejs实现的智慧小区服务系统[包运行成功]Nodejs毕业设计计算机项目源码

热门文章

  1. MySQL高级 - 并发参数调整
  2. CGLib 和JDK 动态代理对比
  3. Quartz集成到 Spring
  4. 注解方式使用 Redis 缓存
  5. SpringMVC的请求-文件上传-文件上传的原理
  6. 缓存-分布式锁-Redisson-闭锁测试
  7. 在jsx中绑定js表达式以及jsx注释
  8. Request_获取请求头数据
  9. 循环嵌套-[扩展]print函数的结尾处理
  10. oracle 10g 更换ocr,Oracle10g RAC在线更换OCR votedisk