Prim 算法属于贪心算法。

#include <stdio.h>
#define VERTEXNUM 7
#define INF 10000 typedef struct Graph {
int vertex[VERTEXNUM];
int edge[VERTEXNUM][VERTEXNUM];
} Graph; void initGraph(Graph* G) {
int i, j;
int init[][3] = {{1, 2, 10}, {1, 3, 8}, {1, 6, 20},
{2, 3, 3}, {2, 5, 30}, {3, 4, 18},
{3, 6, 7}, {4, 5, 2}, {6, 7, 1}};
for (i = 0; i < VERTEXNUM; i++) {
G->vertex[i] = 'a' + i;
for (j = 0; j < VERTEXNUM; j++) {
G->edge[i][j] = INF;
}
}
for (i = 0; i < 9; i++) {
G->edge[init[i][0] - 1][init[i][1] - 1] = init[i][2];
G->edge[init[i][1] - 1][init[i][0] - 1] = init[i][2];
}
} void prim(Graph* G) {
int parent[VERTEXNUM];
int selected[VERTEXNUM];
int nearest[VERTEXNUM];
int i, j, k, lastVer, min;
for (i = 0; i < VERTEXNUM; i++) {
parent[i] = -1;
selected[i] = 0;
nearest[i] = INF;
}
lastVer = 0;
// selected[0] = 1;
for (i = 0; i < VERTEXNUM; i++) {
if (G->edge[0][i] < INF) {
parent[i] = 0;
nearest[i] = G->edge[0][i];
}
}
for (i = 1; i < VERTEXNUM; i++) {
min = INF;
if (selected[lastVer] == 1)
continue;
selected[lastVer] = 1;
for (j = 0; j < VERTEXNUM; j++) {
if (G->edge[lastVer][j] < nearest[j]) {
parent[j] = lastVer;
nearest[j] = G->edge[lastVer][j];
}
}
for (j = 0; j < VERTEXNUM; j++) {
if (selected[j] != 1 && nearest[j] < min) {
min = nearest[j];
lastVer = j;
}
}
printf("lastVer: %d\n", lastVer);
}
}
int main () {
Graph G;
initGraph(&G); prim(&G);
return 0;
}

【算法与数据结构】图的最小生成树 MST - Prim 算法的更多相关文章

  1. C++编程练习(10)----“图的最小生成树“(Prim算法、Kruskal算法)

    1.Prim 算法 以某顶点为起点,逐步找各顶点上最小权值的边来构建最小生成树. 2.Kruskal 算法 直接寻找最小权值的边来构建最小生成树. 比较: Kruskal 算法主要是针对边来展开,边数 ...

  2. 数据结构与算法--最小生成树之Prim算法

    数据结构与算法--最小生成树之Prim算法 加权图是一种为每条边关联一个权值或称为成本的图模型.所谓生成树,是某图的一棵含有全部n个顶点的无环连通子图,它有n - 1条边.最小生成树(MST)是加权图 ...

  3. 算法学习记录-图——最小生成树之prim算法

    一个连通图的生成树是一个极小的连通子图,它包含图中全部的顶点(n个顶点),但只有n-1条边. 最小生成树:构造连通网的最小代价(最小权值)生成树. prim算法在严蔚敏树上有解释,但是都是数学语言,很 ...

  4. 24最小生成树之Prim算法

    最小生成树的Prim算法 思想:采用子树延伸法 将顶点分成两类: 生长点——已经在生成树上的顶点 非生长点——未长到生成树上的顶点 使用待选边表: 每个非生长点在待选边表中有一条待选边,一端连着非生长 ...

  5. 最小生成树之Prim算法--蓝白点思想

    Prim算法: 以前一直不是很明白,Prim算法,今天就来终结一下. Prim算法采用与Dijkstra.Bellman-Ford算法一样的“蓝白点”思想:白点代表已经进入最小生成树的点,蓝点代表未进 ...

  6. 最小生成树的Prim算法

       构造最小生成树的Prim算法    假设G=(V,E)为一连通网,其中V为网中所有顶点的集合,E为网中所有带权边的集合.设置两个新的集合U和T,其中集合U用于存放G的最小生成树的顶点,集合T用于 ...

  7. hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)

    还是畅通工程                                                                            Time Limit: 4000/2 ...

  8. hihocoder 1097 最小生成树一·Prim算法

    #1097 : 最小生成树一·Prim算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可 ...

  9. Hihocoder 之 #1097 : 最小生成树一·Prim算法 (用vector二维 模拟邻接表,进行prim()生成树算法, *【模板】)

    #1097 : 最小生成树一·Prim算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可 ...

随机推荐

  1. 四、Vue CLI-异步请求(axios)

    一.模块的安装 npm install axios --save #--save可以不用写 如图: 二.配置main.js import axios from 'axios' Vue.prototyp ...

  2. (转) weblogic 12c忘记密码

    weblogic安装后,很久不用,忘记访问控制台的用户名或者密码,可通过以下步骤来重置用户名密码. 说明:%DOMAIN_HOME%:指WebLogic Server 域(Domain)目录 我的是: ...

  3. Ubuntu16.04下caffe CPU版的图片训练和测试

    一 数据准备 二.转换为lmdb格式 1.首先,在examples下面创建一个myfile的文件夹,来用存放配置文件和脚本文件.然后编写一个脚本create_filelist.sh,用来生成train ...

  4. JS 验证码的实现

    转自:https://github.com/ace0109/verifyCode 正要做一个验证码,网上找到这个还不错: gVerify.js: !(function(window, document ...

  5. Lambda学习总结(一)--函数式接口

    Lambda 表达式是 JDK 1.8 里面的一个重要更新,这意味着 Java 也开始承认了函数式编程,并且尝试引入其中,我们今天就来了解下它的使用. 一.函数式接口 1.1 概念 函数式接口在 Ja ...

  6. python(Django2.0) 安装

    前言 哇 ,python 是真的强大,看看如何安装的python: 下载咯 在python的官网下载python对应版本:https://www.python.org/downloads/window ...

  7. 【NOIP2016提高A组集训第4场11.1】平衡的子集

    题目 夏令营有N个人,每个人的力气为M(i).请大家从这N个人中选出若干人,如果这些人可以分成两组且两组力气之和完全相等,则称为一个合法的选法,问有多少种合法的选法? 分析 如果暴力枚举每个人被分到哪 ...

  8. 【NOIP2016提高A组五校联考2】string

    题目 给出一个长度为n, 由小写英文字母组成的字符串S, 求在所有由小写英文字母组成且长度为n 且恰好有k 位与S 不同的字符串中,给定字符串T 按照字典序排在第几位. 由于答案可能很大,模10^9 ...

  9. ftp CentOS7安装

    1.安装ftp服务yum install vsftpd 2.修改ftp配置文件(/etc/vsftpd/vsftpd.conf)ascii_upload_enable=YESascii_downloa ...

  10. vertical-greenplum

    https://github.com/sumitchawla/docker-vertica You can either pull the image from Docker Registry usi ...