POJ1422】的更多相关文章

其实吧,bzoj2150还是比较水的, 在你知道什么是最小路径覆盖的前提下: 最小路径覆盖就是在有向无环图中,每个点只能被一条路径关联,问最少有多少条路能覆盖这个图 方法是,把对于原图每个点我们拆成左右两个点i1,i2,对于每条边i--->j,那么我们连i1,j2之间连一条边 然后就是二分图,ans=原图点数-最大匹配 这里总结一下很有用的结论 最小路径覆盖=原图点数-最大匹配 最大独立集=二分图总点数(左右两边)-最大匹配 最小顶点覆盖=最大匹配 回到这题上来,由于规定只能往下走,那么就保证了…
题目链接: https://vjudge.net/problem/POJ-1422 题目大意: 有n个点和m条有向边,现在要在点上放一些伞兵,然后伞兵沿着图走,直到不能走为止 每条边只能是一个伞兵走过,问最少放多少个伞兵 解题思路: 最小路径覆盖 最小路径覆盖=|G|-最大匹配数 重点是,建图的时候,把每个点分成两部分A1,A2,如果有边A->B,就在二分图上加A1->B2 这里的巧妙可以看下面的例子 对于一条路径,起点的入度为0,终点的出度为0,中间节点的出入度都为1. 每一个点最多只能有1…
题意:DAG求最小路径覆盖. 注意:二分匹配只试用于求DAG的最小路径覆盖, 有环就不行,具体可以理解证明. 对n个点进行拆点,分成左右两排点,对于边<u, v> 建  <u', v''> . 然后 最小路径覆盖 == 总点数n - 最大匹配. 简单的证明: 每匹配一对<u,v>就说明u和v在同一条路径上,拿路径数就少1. #include <cstdio> #include <cstring> #include <algorithm>…
Air Raid Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6763   Accepted: 4034 Description Consider a town where all the streets are one-way and each street leads from one intersection to another. It is also known that starting from an i…
http://poj.org/problem?id=1422 题目大意:n个点m条有向边,每条边只能走一次,往点上放人让他们走遍所有边,问至少要多少人. —————————————————————— 网上的题解都蛮详尽的了所以不想写这篇博客. (但是强迫症) 首先这是一道最小路径覆盖问题,有结论转换成求|节点数-最大匹配|,证明看这个人的博客. 我们将每个点拆分成两个点(设左点和右点),左点为一个集合,右点为一个集合. 这样的话两个点ij中间的有向边就是i左点连j右点. #include<cst…
Air Raid Language:Default Air Raid Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9547 Accepted: 5696 Description Consider a town where all the streets are one-way and each street leads from one intersection to another. It is also known t…
Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8006   Accepted: 4803 Description Consider a town where all the streets are one-way and each street leads from one intersection to another. It is also known that starting from an intersecti…
题目大意: 一个有向无环图,求最小路径覆盖 板子题... 把每个点拆成\(x\)和\(x^{'}\) \((u,v)\)有一条边则\(u\)向\(v^{'}\)连一条边,然后跑最大匹配,最小路径覆盖=节点数-最大匹配 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; names…
题意:      一个战场,往战场上投放伞兵,每个伞兵不能后退,只能往前走,问你最少多少个伞兵可以吧所有的点都占领. 思路:      这个题是最小路径覆盖,最小路径覆盖 = n - 最大匹配数,首先说下什么是最小路径覆盖,给你一个有向无环图,问你最少用多少条无返回路径可以覆盖所有点,再说下为什么是n - 最大匹配数,想下,假如没有边,那么就是每个点放一个伞兵,假如只有一条边,那么就是n - 1,两条的或有可能是 n - 1,也有可能是 n - 2,加入是 a->b->c 就是n - 1,如果…
DAG的最小路径覆盖 定义:在一个有向图中,找出最少的路径,使得这些路径经过了所有的点. 最小路径覆盖分为最小不相交路径覆盖和最小可相交路径覆盖. 最小不相交路径覆盖:每一条路径经过的顶点各不相同.如图,其最小路径覆盖数为3.即1->3>4,2,5. 最小可相交路径覆盖:每一条路径经过的顶点可以相同.如果其最小路径覆盖数为2.即1->3->4,2->3>5. 特别的,每个点自己也可以称为是路径覆盖,只不过路径的长度是0. DAG的最小不相交路径覆盖 算法:把原图的每个点…