寻宝--Kruskal
题目描述:
在世界的某个区域,有一些分散的神秘岛屿,每个岛屿上都有一种珍稀的资源或者宝藏。国王打算在这些岛屿上建公路,方便运输。
不同岛屿之间,路途距离不同,国王希望你可以规划建公路的方案,如何可以以最短的总公路距离将 所有岛屿联通起来。
给定一张地图,其中包括了所有的岛屿,以及它们之间的距离。以最小化公路建设长度,确保可以链接到所有岛屿。
输入描述:
第一行包含两个整数V 和 E,V代表顶点数,E代表边数 。顶点编号是从1到V。例如:V=2,一个有两个顶点,分别是1和2。
接下来共有 E 行,每行三个整数 v1,v2 和 val,v1 和 v2 为边的起点和终点,val代表边的权值。
输出描述:
输出联通所有岛屿的最小路径总距离
输入示例:
7 11 1 2 1 1 3 1 1 5 2 2 6 1 2 4 2 2 3 2 3 4 1 4 5 1 5 6 2 5 7 1 6 7 1
输出示例:
6
prim是维护节点的集合,kruskal 是维护边的集合
kruskal算法中,先将集合中的边都从小到大排序,然后每次都选取(连接)最小的边,然后判断这条边的两个节点是否已经在同一个集合中,如果已经在了就不能再选(舍弃这条边)了,如果选取了则可能造成环
prim是每次选取距离最小生成树最近的节点,然后连接起来,慢慢壮大这棵树、
kruskal是每次连接最短的边然后在拼一棵树
感觉比prim简单一点点点点