这道题目有点变化,条件是每条路的花费不能超过1000也不能小于10,否则不修该条路,所以呢,用kruskal最好,这种方法是检查每一条边,符合情况就加进去,否则就舍去,这样最后判断一下是不是所有的点都有一个共同的祖先就知道是不是连通图。如果用prim算法的话,它每次选的是最小值,得判断一下,实现起来比较麻烦。
代码:(kruskal)
#include
#include
#include
#i...
分类:
其他好文 时间:
2015-08-19 23:43:57
阅读次数:
194
求最小生成树,有一点点的变化,就是有的边已经给出来了,所以,最小生成树里面必须有这些边,kruskal和prim算法都可以,prim更简单一些,有一点需要注意,用克鲁斯卡尔算法的时候需要将已经存在的边预处理一下,并查集转化为同一个祖先,记得要找他们的祖先再转化。普里姆算法只需要将那些已经存在的边都初始化为0就可以了。
kruskal:
#include
#include
#include
#i...
分类:
其他好文 时间:
2015-08-19 20:45:04
阅读次数:
95
Prim算法是和Kruskal算法对应的一个避圈法,两者的百度百科都写得蛮好,不赘述 代码 PASCAL代码 c代码 C++代码 Mathematica代码(如下)Prim[tu_, dian_] := Module[(*中括号要紧跟Module*) {diancount = 1,(*点集*)...
分类:
编程语言 时间:
2015-08-19 19:45:32
阅读次数:
151
比较成熟的算法,百度百科有,不赘述Kruskal算法适用于边稀疏的情形,而Prim算法适用于边稠密的情形主要是各种代码收集,最主要的还是c++的3.1 伪代码3.2 C3.3 matlab3.4 pascal3.5 c++3.6 java代码实现3.7Mathematica实现(如下)(*Krusk...
分类:
编程语言 时间:
2015-08-19 13:16:26
阅读次数:
166
最小生成树~kruskal算法
生成树的概念:
给定一个无向图,如果它的某个子图中任意两个顶点互相连通,并且是一棵树(即不存在环),则此子图便称为一棵生成树。该无向图的生成树并不是唯一存在的,因为其可能有多个子图满足生成树的条件;并且,一个无向图的最小生成树(即生成树的总权值最小)可能也不是唯一的,因为可能存在多条边的权值相等,且都是最小...
分类:
编程语言 时间:
2015-08-18 19:33:49
阅读次数:
150
最小生成树之~普里姆算法
最小生成树是指从连好的图中(有n个点,多于(n-1)条边)选取n-1条边将n个点相互连接,并使得此树的总权值最小。完成此构造的方法著名的有两种,一个是kruskal算法,此算法是对每条边的权值进行排序,然后依次选取小的边添加到树上,并保证是一棵树(即不能产生回路)。另外一个就是prim算法,此算法是从点的角度来考虑。首先用map[][]二维数组存放两点...
分类:
编程语言 时间:
2015-08-18 16:22:00
阅读次数:
142
给定一个无向图,如果它任意两个顶点都联通并且是一棵树,那么我们就称之为生成树(Spanning Tree)。如果是带权值的无向图,那么权值之和最小的生成树,我们就称之为最小生成树(MST, Minimum Spanning Tree)。
我们由最小生成树的定义,可以延伸出一个修建道路的问题:把无向图的每个顶点看作村庄,计划修建道路使得可以在所有村庄之间通行。把每个村庄之间修建...
分类:
编程语言 时间:
2015-08-18 09:08:42
阅读次数:
159
Problem Description
相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现。现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政府决定实现百岛湖的全畅通!经过考察小组RPRush对百岛湖的情况充分了解后,决定在符合条件的小岛间建上桥,所谓符合条件,就是2个小岛之间的距离不能小于10米,也不能大于1000米。...
分类:
其他好文 时间:
2015-08-17 21:55:16
阅读次数:
155
Description
Given a connected undirected graph, tell if its minimum spanning tree is unique.
Definition 1 (Spanning Tree): Consider a connected, undirected graph G = (V, E). A spanning tree o...
分类:
其他好文 时间:
2015-08-17 17:24:13
阅读次数:
104
Problem Description
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。Input
测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对...
分类:
其他好文 时间:
2015-08-17 17:23:09
阅读次数:
117