
图论——最小生成树(MST)
文章平均质量分 82
XDU_Skyline
Everything is over, everything is just beginning.
展开
-
例题11-2 苗条的生成树 UVa1395
1.题目描述:点击打开链接2.解题思路:本题实质上还是利用Kruskal算法来生成MST。首先按照边权值由小到大排序,对于一个连续的边集[L,R],如果使得这n个点全部连通,则一定存在一个苗条度不超过w[R]-w[L]的生成树。因此,可以从小到大枚举L,对于每一个L,利用Kruskal算法生成最小生成树后,计算苗条度,用ans取最小的即可。如果枚举结束后ans依然是INF。那么输出-1。这里可原创 2015-02-28 14:43:34 · 1524 阅读 · 0 评论 -
POJ 3723 Conscription
1.题目描述:点击打开链接2.解题思路:本题考察最小生成树,利用Kruskal算法解决。我们来设想一下这样一个无向图:如果在征募某个人a时,利用了a和b之间的关系,那么就有一条a到b的边。假设这个图中存在圈,那么无论以什么顺序征募这个圈上的所有人,都会产生矛盾。因为其中的关系必须单向利用。比如B和A最亲近,那么有一条边A->B,而C又和B最亲近,那么有B->C,可能实际上A和C也是最亲近的,但原创 2015-04-07 19:25:20 · 652 阅读 · 0 评论 -
例题5.20 秦始皇修路 LA5713
1.题目描述:点击打开链接2.解题思路:本题利用次小生成树解决。根据题意,我们希望在O(1)时间内得知“在原图中删除边u-v后的最小生成树的权值”,这样,整个问题就可以在O(n^2)时间内解决。而“在原图中删除边u-v后的最小生成树权值”正好就是次小生成树的权值。根据生成树的性质不难知道:次小生成树可以由最小生成树加一条边和删除一条边得到。假如我们添加的边是u-v,那么此时图中一定有一个环,我原创 2015-10-05 15:24:31 · 862 阅读 · 0 评论 -
例题5.21 邦德 UVa11354
1.题目描述:点击打开链接2.解题思路:本题利用LCA+MST解决。根据题意,我们需要高效的求解指定的u,v之间的最小瓶颈路(即最大的危险系数尽量小的路径)。根据生成树的结论,最小瓶颈路一定在最小生成树上。由于需要高效的处理很多查询。因此我们需要做预处理,然后在最小生成树上求最近公共祖先。首先把最小生成树转化为有根树,然后设fa[i]表示结点i的父亲,cost[i]表示结点i和父亲之间的边原创 2015-10-05 16:28:37 · 424 阅读 · 0 评论 -
例题5.22 比赛网络 UVa11865
1.题目描述:点击打开链接2.解题思路:本题利用二分+最小树形图解决。根据题意显然应该用二分法,假设当前带宽为x,那么问题转化为:能否用带宽大于等于x的网线搭建起来网络?根据题意描述可知,这个网络是一个有向带权图,如果可以从根到达所有结点的话,那么其中一定存在最小树形图,我们可以用朱刘算法求解出这个最小树形图的权值之和,即最终需要的费用,如果这个费用小于等于给定的cost,那么说明有解,否则无原创 2015-10-05 21:11:33 · 715 阅读 · 0 评论 -
UVa10600 ACM Contest and Blackout
1.题目描述:点击打开链接2.解题思路:本题实际上是求最小生成树和次小生成树。做法在之前的例题中已经用过多次,不予赘述了。3.代码:#include#include#include#include#include#include#include#include#include#include#include#include#include#include#i原创 2015-10-05 23:54:01 · 414 阅读 · 0 评论