最小生成树
DCrusher
这个作者很懒,什么都没留下…
展开
-
BZOJ1083繁忙的都市
Description城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造。城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条道路相连接。这些道路是双向的,且把所有的交叉路口直接或间接的连接起来了。每条道路都有一个分值,分值越小表示这个道路越繁忙,越需要进行改造。但是市政府的资金有限,市长希望进行改造的道路越少越好原创 2015-10-27 19:04:40 · 876 阅读 · 0 评论 -
kruskal算法
1.算法思想 先构造一个只含n个顶点而边集为空的子图,把子图中各个顶点看成各棵树上的根结点,之后,从网的边集E中选取一条权值最小的边,若该条边的两个顶点分属不同的树,则将其加入子图,即把两棵树合成一棵树,反之,若该条边的两个顶点已落在同一棵树上,则不可取,而应该取下一条权值最小的边再试之。依次类推,直到森林中只有一棵树,也即子图中含有n-1条边为止。 时间复杂度O(e²),使用并查集优化后复杂度原创 2016-02-06 23:37:53 · 717 阅读 · 0 评论 -
prim算法 优化前O(n²) 优化后O(n-k)
1.算法思想 图采用邻接矩阵存储,贪心找到目前情况下能连上的权值最小的边的另一端点,加入之,直到所有的顶点加入完毕。 2.算法实现步骤 设图G=(V,E),其生成树的顶点集合为U。 (1)把v0放入U。 (2)在所有u∈U,v∈V-U的边(u,v)∈E中找一条最小权值的边,加入生成树。 (3)把(2)找到的边的v加入U集合。如果U集合已有n个元素,则结束,否则继续执行(2)。 最后得到原创 2016-02-04 22:44:42 · 1416 阅读 · 0 评论