求最小生成树的长度最小的边,我用的是prim算法: 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int INF=0x3f3f3f3f; 7 int map[505][505]; 8 int visit[5...
分类:
其他好文 时间:
2015-05-15 21:13:17
阅读次数:
91
利用Prim算法求最小生成树,其工作原理与Dijkstra相似。这棵树从一个任意的根节点r开始,一只长大到覆盖V中的所有顶点为止。算法每一步加入的边都必须是使树的总权重增加量最小的边。代码转载自:http://www.cnblogs.com/Veegin/archive/2011/04/29/203...
分类:
Web程序 时间:
2015-05-15 10:31:49
阅读次数:
174
一个连通图的生成树是图的极小连通子图。它包含图中的所有顶点,并且只含尽可能少的边。若砍去它的一条边,就会使生成树变成非连通图;若给它增加一条边,则会形成一条回路。
最小生成树有如下性质:
1.最小生成树非唯一,可能有多个最小生成树;
2.最小生成树的边的权值之和总唯一,而且是最小的;
3.最小生成树的边数为顶点数减1。
构造最小生成树可以有多种算法。其中多数算法利用了最小生成树的下列一种...
分类:
编程语言 时间:
2015-05-14 22:09:36
阅读次数:
198
最小生成树树 prim算法,第一次写
#include
#define maxn 100+5
#define inf 1<<30
using namespace std;
int n;
int mapp[maxn][maxn];
int visit[maxn];
int d[maxn];
int re;
void prim()
{
fill(visit,visit+maxn,0);
fill...
分类:
其他好文 时间:
2015-05-14 20:35:00
阅读次数:
117
prim就是一个让树长大的过程 弄一个集合 从一个点开始不断向外搜索 找到权值最小的点 放进集合中 从这个集合所连的边再向外找 1 #define USED 0 2 #define NOADJ -1 3 void Prim(MaxtrixGraph G) 4 { 5 int i,j,k,mi...
分类:
编程语言 时间:
2015-05-10 23:57:45
阅读次数:
175
最小生成树,刚刚学了Prim算法。对每条边变的权值进行预处理,c[i][j] = c[i][j] + p[i] + p[j] 其中c[i][j]为输入的权值,p[i],p[j]为连接这两个节点所需的费用。#include#include#include#includeusing namespace ...
分类:
Web程序 时间:
2015-05-07 00:23:01
阅读次数:
187
#include
using namespace std;
#define MAXN 10002
int Map[100][100],Vis[100],Low[100],Tree[100];
int n;
void Prim()
{
int i,j,p;
int minc;
memset(Vis,0,sizeof(Vis));
Vis[0]=1;
for( i=1...
分类:
编程语言 时间:
2015-04-20 17:03:16
阅读次数:
174
这个算法的 思想 根 求 最小生成树算法 普里姆(Prim)算法 极其相似。迪杰斯算法 是求 一个顶点 到其他 顶点的 最短路径算法。
下面 上代码:(用的是 邻接矩阵 表示法)
//迪杰斯特拉 最短路径。
//从 vex顶点 到其他 顶点的 最短路径
void shortestPath_Dij(MGraph g,char vex){
int loc = graphLocation(g,ve...
分类:
编程语言 时间:
2015-04-14 16:42:10
阅读次数:
171
这题思路也很简单,就是用一个最大堆堆去维护Prim算法中的Low数组,把刷新Low数组的操作,变成了刷新堆的操作,由于堆的插入操作位logn,查询时间为常数,因此在边稀疏的情况下,其复杂度与Kruscal接近。这题刚开始老是WA,想了很久,不知道错在哪里,后来发现时因此不能直接去堆中的最小路径,因为...
分类:
编程语言 时间:
2015-04-13 00:10:33
阅读次数:
190
Dijkstra(迪杰斯特拉)算法,用于计算一个节点到其他所有节点的最短路径。要注意的是这个算法中路径的权值不能有负边,如果有负边的话要运用bellman
ford算法。
学习了一下dijkstra算法,感觉跟最小生成树的Prim算法有点类似。感觉dijkstra也是一个贪心的策略,用集合S表示的是已经找出最小路径的点,用dis[]来表示每个点当前距离源点的最短距离。再用一个数组来存储两点之...
分类:
编程语言 时间:
2015-04-12 09:25:20
阅读次数:
180