ZJU2048 Highways - 最小生成树+合并连通分量
2008-03-07 21:56
197 查看
题目描述:
一个小岛政府希望修建一些高速公路将所有村庄都连通。之前已经修建了k条公路,现在给出n个村庄的坐标,k条公路,问最少还需要多少费用建设高速公路。(n<=750,k<=1000)
分析:
此题和2006年广东省赛的一道题很类似,当时比赛的时候思路都很清晰且方向正确,但是由于对最小生成树和并查集都不熟做了很久还是没有调试成功……
仔细分析题目,也就是一个变了形的求完全图最小生成树,用Prim算法就行。
由于之前已经修建了一些道路,所以有一些村庄是连通的,并且这些道路中有可能存在回路。
我们可以将每一个连通分量都合并成一个顶点,构建一个新图,图中顶点是原始图中的连通分量;两个顶点之间的距离是两个连通分量中的点之间的最小距离。
然后对这个新图做一次Prim算法即可。
合并连通分量的时候用并查集可提高效率。
一个小岛政府希望修建一些高速公路将所有村庄都连通。之前已经修建了k条公路,现在给出n个村庄的坐标,k条公路,问最少还需要多少费用建设高速公路。(n<=750,k<=1000)
分析:
此题和2006年广东省赛的一道题很类似,当时比赛的时候思路都很清晰且方向正确,但是由于对最小生成树和并查集都不熟做了很久还是没有调试成功……
仔细分析题目,也就是一个变了形的求完全图最小生成树,用Prim算法就行。
由于之前已经修建了一些道路,所以有一些村庄是连通的,并且这些道路中有可能存在回路。
我们可以将每一个连通分量都合并成一个顶点,构建一个新图,图中顶点是原始图中的连通分量;两个顶点之间的距离是两个连通分量中的点之间的最小距离。
然后对这个新图做一次Prim算法即可。
合并连通分量的时候用并查集可提高效率。
相关文章推荐
- 最小生成树MST的Kruskal算法+并查集(链表实现)划分连通分量和集合,并查集可以保存多个集合
- 数据结构与算法专题之图——连通分量与最小生成树
- 关于最小生成树中的kruskal算法中判断两个点是否在同一个连通分量的方法总结
- 分量算法poj 1751 Highways 最小生成树之Kruskal(克鲁斯卡尔)算法
- poj2485 Highways 最小生成树求最大边
- POJ 1751 Highways(最小生成树+剪枝)
- 初级->图算法->最小生成树 poj 2485 Highways
- poj 3522 二分+判图连通(最小Slim生成树)
- hdu 3371(启发式合并的最小生成树)
- sicily 1090 Highways 最小生成树
- POJ 2485 Highways(最小生成树Prim算法)
- POJ 2485 Highways 最小生成树 (Kruskal)
- poj 2485 Highways(最小生成树,prim)
- 最小生成树的边为主算法kruskal 九度acm1347: 孤岛连通工程
- poj 2485 Highways(最小生成树中求最大权值)
- POJ2485——Highways(最小生成树)
- pku 2485 Highways 典型最小生成树
- POJ 2485 Highways (水题入门最小生成树)
- hdoj_1102Constructing Roads(最小生成树)&& poj_2485Highways
- 图论小结(一)包括一些最短路,最小生成树,差分约束,欧拉回路,的经典题和变种题。强连通,双连通,割点割桥的应用。二分匹配,KM,支配集,独立集,还有2-SAT。