题目连接:http://poj.org/problem?id=1861题目的意思就是找最小生成树那我们选择kruskal算法 我先来说一下kruskal算法:假设 WN=(V,{E}) 是一个含有 n 个顶点的连通网,则按照克鲁斯卡尔算法构造最小生成树的过程为:先构造一个只含 n 个顶点,而边集为空...
分类:
其他好文 时间:
2015-04-05 23:16:06
阅读次数:
157
最早接触并查集的时候是在做一道最小生成树问题上,当时还不会并查集,题解说用克鲁斯卡尔算法,用并查集来维护,就能够完成最小生成树。并查集是什么呢?其实,并查集就是一个集合,它有两种操作,一个是合并(merge),一个是查找(getf)。 合并就是说把具有相同祖先的集合合并成为一个集合,查找就是说,.....
分类:
其他好文 时间:
2015-03-28 20:17:12
阅读次数:
163
Constructing Roads
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 15475 Accepted Submission(s): 5907
Problem Description
There ...
分类:
编程语言 时间:
2015-03-28 15:50:30
阅读次数:
124
畅通工程
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 19257 Accepted Submission(s): 8188
Problem Description
省政府“畅通工程”的目标是使全省任何...
分类:
编程语言 时间:
2015-03-28 14:24:52
阅读次数:
169
还是畅通工程
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 28865 Accepted Submission(s): 12903
Problem Description
某省调查乡村交通状况,得到的统...
分类:
编程语言 时间:
2015-03-28 14:22:22
阅读次数:
133
给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树.1、克鲁斯卡尔算法方法:将图中边按其权值由小到大的次序顺序选取,若选边后不形成回路,则保留作为一条边,若形成回路则除去.依次选够(n-1)条边,即得最小生成树.(n为顶点数)克鲁斯卡尔法对于边特别多的情况,消...
分类:
编程语言 时间:
2015-03-12 14:47:48
阅读次数:
182
一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。
克鲁斯卡尔(Kruskal)算法(只与边相关)
算法描述:克鲁斯卡尔算法需要对图的边进行访问,所以克鲁斯卡尔算法的时间复杂度只和边又关系,可以证明其时间复杂度为O(eloge)。...
分类:
编程语言 时间:
2015-03-10 17:16:34
阅读次数:
168
type arr=record u,v,w,nt:longint; end;var i,j,m,n,x,y:longint; ans:int64; a:array[0..200008] of arr; fa:array[0..200008] of lon...
分类:
其他好文 时间:
2015-03-10 13:45:32
阅读次数:
176
1、概念:给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树.
2、应用:例如:要在n个城市之间铺设光缆,主要目标是要使这
n 个城市的任意两个之间都可以通信,但铺设光缆的费用很高,且各个城市之间铺设光缆的费用不同,因此另一个目标是要使铺设光缆的总费用最低。这就需要找到带权的最小生成树。
3、求最小生成树的算法
3.1 普里姆(Prim)算...
分类:
编程语言 时间:
2015-03-10 12:13:41
阅读次数:
261
#include"iostream"
#include"algorithm"
using namespace std;
struct Edge {
int begin; //边起始点
int end; //边结束点
int weight; //边的权重
};
//用于把所有边按权重的大小排序
bool comp(const Edge& e1, const Edge& e2) {
...
分类:
编程语言 时间:
2015-03-10 12:09:01
阅读次数:
161