DAG最小路径点覆盖
Problem
给出一个有向无环图 (\(DAG\)),求出最少使用其中多少条互不相交的路径覆盖所有点。
Solution
若有 \(n\) 个点,对于每个点 \(i\) ,我们将它拆成两个点 \(i\) 与 \(i'\),分别放在一个二分图的两侧,然后,对于有向图中的每条边 \((a,b)\) 我们在二分图中将 \((a,b')\) 这两个点连在一起。
当所有边在二分图中已经相应连好之后,我们跑二分图最大匹配,可以使用匈牙利,不过个人更倾向建立一个超级源点连向左侧每个点,建立一个超级汇点被右侧每个点所连,然后跑网络最大流。
假设最大流为 \(maxflow\) ,则最小路径覆盖数为 \(n-maxflow\) 。
Confirmation
由于要求选出的每条路径都要不相交,那么对于每条路径中的点,它的入度与出度均不会大于 \(1\) 。尤其对于每个起点,入度必定为 \(0\) ,每个终点出度必定为 \(0\) 。
那么由于 \(DAG\) 中的每条边都已经放到了二分图里,对于 \(DAG\) 最小路径选边的情况必定已经能够在二分图里选出来了。
接着我们考虑一下所要求的问题,显然一条路径只会有一个终点,且一个终点必定属于某条路径。而终点的出度又必定为 \(0\) 。那么这样对应的选边情况放到二分图里呢?我们就会发现:
- 对于一个点 \(i\) ,它指向 \(j\) 的出边必定在二分图上为 \((i,j')\)
- 对于一个点 \(i\) ,如果它的出度为 \(0\) ,那么二分图上的 \(i\) 必定不与任意一个 \(j'\) 所匹配。
- 选出的路径最少 \(\Leftrightarrow\) 终点最少 \(\Leftrightarrow\) 二分图左侧的未匹配点最少 \(\Leftrightarrow\) 二分图匹配数最大
那么根据以上证明,可以得出:最少路径= 最少终点 = 总点数-最大匹配数 = \(n-maxflow\) 。
证毕。
DAG最小路径点覆盖的更多相关文章
- uva1201 DAG 最小路径覆盖,转化为 二分图
大白例题P356 你在一座城市里负责一个大型活动的接待工作.你需要去送m个人从出发地到目的地,已知每个人的出发时间出发地点,和目的地点,你的任务是用尽量少的出租车送他们,使得每次出租车接客人,至少能提 ...
- 【LA3126 训练指南】出租车 【DAG最小路径覆盖】
题意 你在一座城市里负责一个大型活动的接待工作.明天将有m位客人从城市的不同的位置出发,到达他们各自的目的地.已知每个人的出发时间,出发地点和目的地.你的任务是用尽量少的出租车送他们,使得每次出租车接 ...
- 训练指南 UVALive - 3126(DAG最小路径覆盖)
layout: post title: 训练指南 UVALive - 3126(DAG最小路径覆盖) author: "luowentaoaa" catalog: true mat ...
- 1350 Taxi Cab Scheme DAG最小路径覆盖
对于什么是DAG最小路径覆盖以及解题方法在我的另外的博客已经有了.http://www.cnblogs.com/Potato-lover/p/3980470.html 此题的题意: 公交车(出租车)车 ...
- LUOGU P2764 最小路径覆盖问题 (最小路径点覆盖)
解题思路 有向图最小路径点覆盖问题,有这样的结论就是有向图最小路径点覆盖等于n-拆点二分图中最大匹配.具体怎么证明不太知道..输出方案时找到所有左部未匹配的点一直走$match$就行了. #incl ...
- POJ1422 Air Raid 【DAG最小路径覆盖】
Air Raid Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6763 Accepted: 4034 Descript ...
- hdu3861 The King’s Problem 强连通缩点+DAG最小路径覆盖
对多校赛的题目,我深感无力.题目看不懂,英语是能懂的,题目具体的要求以及需要怎么做没有头绪.样例怎么来的都不明白.好吧,看题解吧. http://www.cnblogs.com/kane0526/ar ...
- HDU 3861 The King’s Problem (强连通缩点+DAG最小路径覆盖)
<题目链接> 题目大意: 一个有向图,让你按规则划分区域,要求划分的区域数最少. 规则如下:1.所有点只能属于一块区域:2,如果两点相互可达,则这两点必然要属于同一区域:3,区域内任意两点 ...
- bzoj 2044 三维导弹拦截——DAG最小路径覆盖(二分图)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2044 还以为是CDQ.发现自己不会三维以上的…… 第一问可以n^2.然后是求最长不下降子序列 ...
随机推荐
- python selenium设置chrome的下载路径
python可以通过ChromeOptions设置chrome参数,如下载路径等,代码如下(python 3.6.7): #-*-coding=utf-8-*- from selenium impor ...
- sqlyog下载
sqlyog下载(附注册码):http://www.onlinedown.net/soft/24926.htm
- MQ(转)
1. 到底什么时候该使用MQ? 1). 典型场景一:数据驱动的任务依赖 采用MQ的优点是: a. 不需要预留buffer,上游任务执行完,下游任务总会在第一时间被执行 b. 依赖多个任务,被多个任务依 ...
- Django 创建项目流程
django 项目创建流程 1 创建项目 cmd django-admin startproject 项目名称 pycharm file -- new project -- Django -- 项目名 ...
- SQL非域环境下带自动故障转移数据库镜像的实现方法(包括镜像服务器)
使用数据库镜像来提高数据库的高可用性,在镜像服务器创建镜像数据库的快照以卸载报表查询对生产数据库的负载.TechNet有讲座对此技术进行介绍,但看到大家在讲座的讨论区中遇到了很多问题,下面我把在非域环 ...
- javaweb笔记—02
1.compatible:adj. 兼容的:能共处的:可并立的2.web所有的请求都是http请求,http请求默认的编码是ISO-8859-1,不支持utf-8,要统一设置前台和后台一样,才不会乱码 ...
- ASCII字符代码表
- OpenCV入门笔记(七) 文字区域的提取
https://blog.csdn.net/huobanjishijian/article/details/63685503 前面我们已经学了一些OpenCV中基本的图片处理的知识,可以拿来做一些小应 ...
- Tencent QQ现在就是一个十八层地狱下面的大恶魔-删除右键里的"通过QQ发送到"
都是流氓软件, 有人推荐装什么管家什么助手来清除, 那就是请走一个流氓又引进另外一个流氓. 下面的注册表项直接手工删除 32位系统: windows Registry Editor Version 5 ...
- git小技巧--如何从其他分支merge个别文件或文件夹
在实际工作中,一个大型的项目或版本迭代可能不是一次上线,可能会分好几次上线,这时候就会涉及创建多个分支,进行分别开发. 创建分支 功能分为2个分支,分别为A.B. A上面有个列表页功能 B上面有个详情 ...