[codevs 1904] 最小路径覆盖问题

题解:

因为题目中边的长度“可以为0”, 所以不妨先假设一种特殊情况,就是所有边的长度均为0,那么需要的路径就是n条(n为点的个数);然后我们在这些点之间连一些边,按照题目要求每个点至多有一条边,可以发现每连一条边覆盖的路径就少了一条。那么什么时候覆盖的路径最少呢?连的边最多的时候,最多多少条边?答案就是这个图的最大基数匹配。则最少的路径条数就是点的个数-最大基数匹配。
PS:本题目其实是不要输出路径的,CODEVS上描述有误。

代码:

总时间耗费: 4ms 
总内存耗费: 364B

#include<cstdio>
#include<iostream>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;const int maxn = 2000 + 10;
const int INF = 1000000007;int n, m;
vector<int> G[maxn];
bool vis[maxn];
int x[maxn], y[maxn];bool dfs(int u) {for(int i = 0; i < G[u].size(); i++) {int v = G[u][i];if(!vis[v]) {vis[v] = 1;if(!y[v] || dfs(y[v])) {x[u] = v;y[v] = u;return 1;}}}return 0;
}int main() {cin >> n >> m;for(int i = 0; i < m; i++) {int a, b;cin >> a >> b; G[a].push_back(b);}int ans = 0;for(int i = 1; i <= n; i++) {memset(vis, 0, sizeof(vis));if(dfs(i)) ans++;}cout << n - ans << endl;return 0;
}

[codevs 1904] 最小路径覆盖问题相关推荐

  1. 【网络流24题】最小路径覆盖问题

    [题目]1738: 最小路径覆盖问题 [题解]网络流 关于输出路径,因为即使有反向弧经过左侧点也一定会改变左侧点的去向,若没连向右侧就会被更新到0,所以不用在意. mark记录有入度的右侧点,然后从没 ...

  2. 最大匹配、最小顶点覆盖、最大独立集、最小路径覆盖(转)

    在讲述这两个算法之前,首先有几个概念需要明白: 二分图:  二分图又称二部图,是图论中的一种特殊模型.设G=(V,E)是一个无向图,如果顶点V可以分割为两个互不相交的子集(A,B),并且图中的每条边( ...

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

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

  4. HDU4160(最小路径覆盖问题)

    题意:当满足条件wi<wj,hi<hl和li<lj时,求解通过优化嵌套给定的娃娃可以获得的最外层洋娃娃的最小数量. 思路:如果嵌套的娃娃越多,则剩下的娃娃就越少,意味着单独出来的娃娃 ...

  5. 最大流 ---- 最小路径覆盖 ---- P2765魔术球问题(网络流24题)

    题目链接 解题思路: 这题题目看起来根本不像网络流但是确实用网络流做的 这个题目有两个限制 每个柱子上面的球相邻两个的和必须是平方数 球的编号必须是连续的 首先我们只考虑第一个条件的话,我们怎么转化成 ...

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

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

  7. 流网络的最小割问题c语言,「网络流24题」最小路径覆盖问题

    Description 问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任 ...

  8. 【网络流24题】D、魔术球问题(有向无环图的最小路径覆盖、思维)

    D.魔术球问题(有向无环图的最小路径覆盖.思维)[省选/NOI- ] P2765 魔术球问题 [问题分析] 枚举答案转化为判定性问题,然后最小路径覆盖,可以转化成二分图最大匹配,从而用最大流解决. [ ...

  9. 【网络流24题】解题报告:C、最小路径覆盖问题(有向无环图最小路径覆盖)(最大流)

    C.最小路径覆盖问题(有向无环图最小路径覆盖)(最大流)[省选/NOI- ] 拆点最大流 [问题分析] 有向无环图最小路径覆盖,可以转化成二分图最大匹配问题,从而用最大流解决. [建模方法] 构造二分 ...

最新文章

  1. java面试题(java基础)
  2. pmp知识点详解-项目大牛整理_PMP核心知识点第六章:项目进度管理(3)
  3. JSON.stringify时间的问题
  4. EOS生产区块:解析插件producer_plugin
  5. 【ElasticSearch】Es 源码之 GatewayMetaState 源码解读
  6. matlab 矩阵逻辑与,MATLAB之逻辑
  7. 怎样修改管家婆服务器密码,管家婆辉煌版如何设置权限和修改操作员密码口令...
  8. 男子常用英文名及含义
  9. python开根号函数的实现
  10. 【2021应用上架】超详细开发者账号申请应用上架审核经验整理
  11. 快速“美女找茬”(辅助工具)
  12. WebGL unsupported in this browser 谷歌浏览器,edge不支持WebGL
  13. 为了写好代码,你坚持了哪些好习惯?
  14. Macbook无法开机备份数据 制作安装系统U盘 安装系统 (图文)
  15. 怎样在知网下载PDF版本的硕博士论文
  16. 搭建L2TP-***
  17. 【Resnet】Resnet代码详解(图+代码)
  18. 诺奖得主 朱棣文 哈佛大学毕业演讲:生命太短暂,你必须对某样东西倾注你的深情!
  19. 使用Hexo搭建个人博客-保姆级教程
  20. wifi打印机打印(二维码,条形码等)

热门文章

  1. [云炬ThinkPython阅读笔记]2.1 赋值语句
  2. cli/c++与C#比较之我见
  3. sqlserver存储过程的参数传递注意事项
  4. 八大编程知名编程语言或系统的发展简史
  5. 面向对象的C语言编程-DynamicLinkageGenericFunctions--C语言中的偷梁换柱
  6. bash的简单for循环
  7. 实验七 寻址方式在结构化数据访问中的应用
  8. 代码段间转移控制时的特权级检查(JMP/CALL)——《x86汇编语言:从实模式到保护模式》读书笔记28
  9. ArrayList笔记
  10. Java小结(四)——折半查找、选择排序、冒泡排序