最小路径覆盖数:
对于一个DAG(有向无环图),选取最少条路径,使得每个 顶点属于且仅属于一条路径。路径长度可以为零;(有向图中找一些路径,使之覆盖了图中的所有顶点,就是任意一个顶点都跟那些路径中的某一条关联,且任何一个顶点有且只有一个与之关联)

最小路径覆盖数(最少边覆盖)=顶点数-最大匹配数;

思路:把每个点都拆成两个点,分为入点和出点,如果 u 到 v 有边,那么我们就让 u 的入点连向 v 的出点 , 匈牙利 算出最大匹配。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdio>
using namespace std;
const int maxx=1005;
const int inf=0x3f3f3f3f;
int used[maxx];
int line[maxx][maxx];
int vis[maxx];
int n,m;
int nxt[maxx];
void init(){memset(used,0,sizeof(used));memset(vis,0,sizeof(vis));memset(line,0,sizeof(line));memset(nxt,-1,sizeof(nxt));
}
int Find(int x){for(int i=1;i<=n;i++){if(used[i]==0&&line[x][i]==1){used[i]=1;if(nxt[i]==-1||Find(nxt[i])){nxt[i]=x;return true;}}}return false;
}
int match(){int sum=0;for(int i=1;i<=n;i++){memset(used,0,sizeof(used));if(Find(i)){sum++;}}return sum;
}
int main(){int t;scanf("%d",&t);while(t--){scanf("%d %d",&n,&m);init();for(int i=1;i<=m;i++){int a,b;scanf("%d %d",&a,&b);line[a][b]=1;}int ans=match();cout<<n-ans<<endl;} return 0;
}

poj1422(最小路径覆盖问题)相关推荐

  1. POJ1422 最小路径覆盖

    题意:      一个战场,往战场上投放伞兵,每个伞兵不能后退,只能往前走,问你最少多少个伞兵可以吧所有的点都占领. 思路:      这个题是最小路径覆盖,最小路径覆盖 = n - 最大匹配数,首先 ...

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

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

  3. 最小路径覆盖问题求解及与最小边覆盖的区别

    最小边覆盖: 边覆盖集:通俗地讲,所谓边覆盖集,就是G中所有的顶点都是E*中某条边的邻接顶点(边覆盖顶点),一条边只能覆盖2个顶点. 注意:在无向图中存在用尽量少的边去"覆盖"住所 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. pytest文档21-pytest-html报告优化(nodeid中文显示[\u6350\u52a9\u6211\u4eec]问题解决)
  2. HTML lt strong gt 标签,HTML lt;legendgt; 标签
  3. Java——List集合特有的功能
  4. 栈溢出笔记1.10 基于SEH的栈溢出
  5. QQ音乐:React v16 新特性实践
  6. GaussDB(for MySQL) HTAP只读分析特性详解
  7. Java为何大行其道
  8. PSCC2018 安装教程
  9. Matlab 边界提取
  10. 高速电路逻辑电平转换设计
  11. 基于大数据的一线城市住房租赁影响因素分析
  12. 一图读懂敏捷开发参与者及基本流程
  13. [SiFi]三体中英名词翻译chapter1-3
  14. jquery-重要的方法和注意事项
  15. word勾选框涂黑和打勾
  16. 高考计算机会考等级划分标准,高中学业水平考试等级是怎么划分的
  17. 顺序表(一篇带你掌握顺序表)
  18. 超小型迷你BT客户端-uTorrent(附安装教程)
  19. WinCE下的USB游戏手柄驱动 GamePad Joystick
  20. n元齐次线性方程组Ax =0解

热门文章

  1. 使用pytorch构建一个神经网络、损失函数、反向传播、更新网络参数
  2. 计算机的学生该怎么做?
  3. JSP第二次作业_6小题
  4. 7 大主题!梳理神经网络中 Normalization 的发展历程
  5. CV新手避坑指南:计算机视觉常见的8个错误
  6. 多目标跟踪 | FairMOT:统一检测、重识别的多目标跟踪框架,全新Baseline
  7. OpenVINO开发教程之八 – 道路分割
  8. 微软提出CLIPBERT:通过稀疏采样的视频语言学习
  9. GitHub代码一键转VS Code:只需+1s
  10. 强化学习与3D视觉结合新突破:高效能在线码垛机器人