
图论—MST
文章平均质量分 78
Ezereal
这个作者很懒,什么都没留下…
展开
-
POJ 1287 Networking (Kruskal)
一道裸的Kruskal#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define L(i) i<<1#define R(i) i<<1|1#def原创 2016-02-23 16:41:20 · 374 阅读 · 0 评论 -
poj 1789 Truck History (Prim)
题意:历史上,曾用7个小写字母来表示每种truck的型号,每两种型号之间的差距为字母串中不同字母的个数。现在给出n种不同型号的truck,问怎样使1/Σ(to,td)d(to,td)的值最小。即找到一条连接所有truck的最短路径。典型的最小生成树的问题, Prim算法适合稠密图,Kruskal算法适合稀疏图,可以使用prim和kruskal两种方法。该题是稠密的图。#in原创 2016-02-24 11:23:57 · 326 阅读 · 0 评论 -
POJ 2349 Arctic Network(Prim)
题意:有S颗卫星和P个哨所,有卫星的两个哨所之间可以任意通信;否则,一个哨所只能和距离它小于等于D的哨所通信。给出卫星的数量和P个哨所的坐标,求D的最小值。分析:这是一个最小生成树问题。P个哨所最多用P-1条边即可连起来,而S颗卫星可以代替S-1条边,基于贪心思想,代替的边越长,求得的D就越小。所以可以用一个数组保存加入最小生成树的边的长度,共有P-1条边,把前S-1条较长的边代替掉,剩下原创 2016-02-24 11:58:46 · 373 阅读 · 0 评论 -
poj 1679 The Unique MST(次小生成树)
判断最下生成树是否唯一的思路:1、对图中的每一条边,扫描其他边,如果存在相同权值的边,则对该边做标记。2、然后用Kruskal算法或Prim算法求MST。3、求得MST后,如果该MST中未包含做了标记的边,即可判断MST唯一;如果包含做了标记的边,则依次去掉这些边再求MST,如果求得的MST权值和原来的MST的权值一样,即可判断MST不唯一。针对poj 1679这题原创 2016-02-24 12:45:00 · 317 阅读 · 0 评论 -
Codeforces Round 335 (Div 2) D. Lazy Student【构造 脑洞 最小生成树】
【题意】 这题也是十分有趣的。 给你一个图,图上有n(1e5)个结点,m(1e5范围且n-1 我们现在,依次告诉你这m条边的—— (长度,是否为最小生成树上选取的边) 让你构造一个图,还原这m条边的可能连接关系。 或者判定这样的图不存在并输出-1 【类型】 构造 脑洞 最小生成树 【分析】 这题还是要借助最小生成树的相关知识的。 最小生成树是每次选边权最小的边,然后如果不存在环,就选取。 于原创 2016-05-01 15:50:43 · 446 阅读 · 0 评论 -
POJ 2728 Desert King (最优比率生成树 01分数规划问题)
题意:在这么一个图中求一棵生成树,这棵树的单位长度的花费最小是多少? 思路: 最小生成树的表达式可以这样写∑x[i]*dis[i]-minsum>=0;(x[i]为0或者1,要求为一棵生成树) 这个题目ans=0;cost[i]-dis[i]*ans就相当于最小生成树中的dis[i];二分ans,check的时候跑一边prime算法看得到的最小生成树的和是否>=原创 2016-08-21 16:36:35 · 290 阅读 · 0 评论 -
(Educational Codeforces Round 9)Magic Matrix(最小生成树)★
题意:给定一个n*n的矩阵,要求你判断是否满足以下条件:(1)a[i][i]=0。(2)a[i][j]==a[j][i]&&i!=j。(3)对于任意a[i][j]分析:很明显我们要处理的难点在于条件3。我们可以将条件3看成对于任意3个点i,j,k恒成立三角形的一边小于等于另外两边的最大值,然后我们可以将这个条件推到4个点i,j,k,l恒成立a[i][l]=a[i][j]。O(n^2logn转载 2016-09-06 16:42:58 · 607 阅读 · 0 评论 -
hdu 4081 Qin Shi Huang's National Road System(★)
题目意思是给你一个完全图,每个点有一个权值。求一棵生成树。你可以使其中一条边权值变成0.使得该边两点的权值和除以生成树的边劝和最小。思路: 具有最优解的树一定有这么一个性质。除了权值变成0的边外,其余的边都必须是最小生成树的边。 基于这点,我们就可以先求出最小生成树,然后枚举的删边。删了一条边之后就变成了两个独立集, 而我们要在这两个集合中找一条边,使得它具有最优解原创 2016-07-25 14:38:53 · 587 阅读 · 0 评论