【转化为二分图判定问题的难题】

关键词:并查集,二分图,搜索。

例题一:

CodeForces-85E:Guard Towers

题意:给定平面上N个点(N<=5000),以及N个点的坐标。现在可以把每个点染成红色或者蓝色。求最小化同色点的最大距离,且求出相应的方案数。

思路:二分答案L,把距离大于等于L的连边,然后判定是否是二分图。 对于求方案数,这个先不管它。

(当然,最优的解法是转化为切比雪夫距离,复杂度极低,这个也先不管它。)

例题二:

CodeForces-164D:Minimum Diameter

题意:给定平面上N个点(N<=1000),以及N个点的坐标。给定K,求删去K个点后,最小化的最远距离。

思路:同上,二分答案,把大于等于L的连边,然后就是求最小点覆盖,即每条边至少有一个点被覆盖(删去)。但是没有规律的无向图的最小点覆盖是NP问题,只能暴力,这里小小的优化一下,如果一个点的入度是1,那么显然覆盖那边边的另一个点。

如果没有见过,两个代码都不是那么好实现(特别是第二个,哭晕)。

原文地址:https://www.cnblogs.com/hua-dong/p/8596000.html

时间: 2024-10-11 06:19:18

【转化为二分图判定问题的难题】的相关文章

uva1201 DAG 最小路径覆盖,转化为 二分图

大白例题P356 你在一座城市里负责一个大型活动的接待工作.你需要去送m个人从出发地到目的地,已知每个人的出发时间出发地点,和目的地点,你的任务是用尽量少的出租车送他们,使得每次出租车接客人,至少能提前一分钟达到他所在的位置,城市为网格 (x1,y1) ===>(x2,y2) 需要|x1-x2|+|y1-y2|分钟 题解: 本题的模型是DAG的最小路径覆盖.所谓最小路径覆盖就是在图中找尽量少的路径,使得每个结点恰好在一条路径上(话句话说,不同路径不能有公共点).单独的节点也可以作为一条路径. 本

poj2699 转化为可行性判定问题+二分枚举+最大流

The Maximum Number of Strong Kings Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2302   Accepted: 1056 Description A tournament can be represented by a complete graph in which each vertex denotes a player and a directed edge is from ve

hdu 5285 wyh2000 and pupil(二分图判定)

对每两个不认识的人连一条边,则此题可转化为二分图判定(二分图可有多个). 如果有一部分图判定为不是二分图,则输出“Poor wyh”. 否则,分别累加每个二分图的最多的颜色数. #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <string> #include <stack> #include <cmat

BZOJ 1937: [Shoi2004]Mst 最小生成树 [二分图最大权匹配]

传送门 题意: 给一张无向图和一棵生成树,改变一些边的权值使生成树为最小生成树,代价为改变权值和的绝对值,求最小代价 线性规划的形式: $Min\quad \sum\limits_{i=1}^{m} \delta_i$ $Sat\quad $非树边边权$\ge$生成树上路径任何一条边的边权 $i$非树边$j$树边 $w_i+\delta_i \ge w_j-\delta_j$ 然后可以转化成二分图最小顶标和来求解 这里需要求二分图最大权非完美匹配,我的做法是遇到$d[t] < 0$就退出,反正这

有向无环图的最小路径覆盖 二分图模型解题

有向无环图中,路径覆盖就是在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联(如果把这些路径中的每条路径从它的起始点走到它的终点,那么恰好可以经过图中的每个顶点一次且仅一次). 最小路径覆盖就是找出最小的路径条数,使之成为原图的一个路径覆盖. 公式:最小路径覆盖=(原图)顶点数-对应的二分图的最大匹配数. 我们通过例题来解释如何把DAG转换为二分图模型. HDU1151Air Raid 题目大意:在一个城镇,有n个路口,和m条单向路,而且这些路不会形成环.现在要弄

POJ 1325 &amp;amp;&amp;amp; ZOJ 1364--Machine Schedule【二分图 &amp;amp;&amp;amp; 最小点覆盖数】

Machine Schedule Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13071   Accepted: 5575 Description As we all know, machine scheduling is a very classical problem in computer science and has been studied for a very long history. Scheduli

UVALive 4043 转化最佳完美匹配

首先黑点和白点是组成一个二分图这毫无疑问 关键是题目中要求的所有黑白配的线不能交叉...一开始我也没想到这个怎么转化为二分图里面的算法. 后来看书才知道,如果两两交叉,则可以把两根线当四边形的对角线,连四边形的两条边,则肯定不交叉,而且一个很明显的特征是,不交叉的两条线的他们的长度和 一定比交叉线的长度和小. 于是我们只要求出最小长度的线,就必定是不相交的.那就要用到最佳完美匹配了,首先算出两两点的欧几里得距离,然后取负数,这样走一遍匹配,得到的必定是最短的欧几里得距离,即不相交的线 #incl

二分图的最大匹配:匈牙利算法

1. 二分图的匹配问题 1.1 二分图 简单来说,如果图中点可以被分为两组,并且使得所有边都跨越组的边界,则这就是一个二分图. 准确地说:把一个图的顶点划分为两个不相交集 U 和 V ,使得每一条边都分别连接U . V 中的顶点.如果存在这样的划分,则此图为一个二分图. 二分图的一个等价定义是:不含有「含奇数条边的环」的图.图 1 是一个二分图.为了清晰,我们以后都把它画成图 2 的形式. 1.2 匹配 在图论中,一个「匹配」(matching)是一个边的集合,其中任意两条边都没有公共顶点.例如

二分图判定

二分图判定问题: 判定是否存在一个合理的染色方案,使得我们所建立的无向图满足每一条边两端的顶点颜色都不相同. 算法描述: (1)选取一个未染色的节点u进行染色. (2)遍历u的邻接点v:若v未染色,则将v染上与u不同的颜色并对v重复步骤(2):若v已经染色且颜色与u相同,则判定不可行并退出遍历. (3)若所有节点都被染色,则判定可行. 代码实现: 1 #include <iostream> 2 #include <vector> 3 #include <cstring>