题目链接:http://hihocoder.com/problemset/problem/1109,最小生成树 + 堆优化(优先队列)。 可以用优先队列,也可以自己手动模拟堆,为了练手,我两种都试了下,优先队列还是要方便一点,不过堆要快一点。 好好学算法,没有无缘无故的爱,也没有无缘无故减少...
分类:
编程语言 时间:
2015-03-06 00:55:32
阅读次数:
249
prim算法 基本思想:先从无向图中标记若干顶点,再从标记顶点中选择权值最小的边,且这条边的另一顶点未被标记,直到所有的点都已被标记。 算法实现:用数组vis表示点的标记情况,数组low表示与点关联的最小权值情况。 1 int prim(int n) 2 { 3 int i,...
分类:
其他好文 时间:
2015-03-05 23:36:34
阅读次数:
164
1 /* 2 普里姆算法的主要思想: 3 利用二维数组把权值放入,然后找在当前顶点的最小权值,然后走过的路用一个数组来记录 4 */ 5 # include 6 7 typedef char VertexType;//定义顶点类型 8 typedef ...
分类:
编程语言 时间:
2015-03-03 18:25:46
阅读次数:
203
Problem Description
There are N villages, which are numbered from 1 to N, and you should build some roads such that every two villages can connect to each other. We say two village A and B are connected, if and only if there is a road between A and B, or t...
分类:
编程语言 时间:
2015-02-23 15:31:07
阅读次数:
231
prim算法描述:prim算法的思想和代码都跟dijkstra算法非常相似。在dijkstra算法中,我们用每次取出未标记集合中到源点最近的点进行标记并更新其邻接点到源点的距离:当d[x]+w 2 #include 3 #include 4 5 using namespace std; 6 ...
分类:
编程语言 时间:
2015-02-22 21:53:54
阅读次数:
152
只要把prim算法稍微改一下就可以了。
#include
#include
#include
#include
using namespace std;
const int N=505;
const int inf=1<<28;
int cost[N][N],mincost[N];
bool used[N];
int n;
int prim()
{
int _max=0;...
分类:
其他好文 时间:
2015-02-15 16:36:39
阅读次数:
182
原文:http://www.cnblogs.com/Veegin/archive/2011/04/29/2032388.html注:这篇博文思路清晰,代码简洁,非常值得学习,特此mark今天从志权师兄那里学会了最小生成树。所谓生成树,就是n个点之间连成n-1条边的图形。而最小生成树,就是权值(两点间...
分类:
编程语言 时间:
2015-02-14 17:26:08
阅读次数:
212
在边赋权图中,权值总和最小的生成树称为最小生成树。构造最小生成树有两种算法,分别是prim算法和kruskal算法。在边赋权图中,如下图所示: 在上述赋权图中,可以看到图的顶点编号和顶点之间邻接边的权值,若要以...
分类:
编程语言 时间:
2015-02-14 07:39:16
阅读次数:
215
又深刻理解了一遍prim和dijkstra算法,感觉蛮棒的~第一次自己用邻接表写,just soso~ 啊哈~一开始被优先队列,重载运算符给卡住了~ 蛋疼~ 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #in...
分类:
编程语言 时间:
2015-02-13 01:32:29
阅读次数:
193
一. 关于最小生成树对于无向连通图G=(V,E),其中V表示图的顶点,E表示图的边,对于每条边都有一个权值,可以理解为边a->b的权值C为从a走到b要走的路程为C。现在我们希望找到一个无回路的子集T,且有T是E的子集,T连接了所有的顶点,且其权值和最小。那么这样一个子图G‘=(V,T)称之为图G的最...
分类:
编程语言 时间:
2015-02-05 20:26:23
阅读次数:
194