#include<iostream>
#include<algorithm>
using namespace std;
#define maxSize 100
#define INF 0x3f3f3f3f
typedef struct
{int no;        //顶点编号 char info;     //顶点其他信息
}VertexType;
typedef struct
{int edges[maxSize][maxSize];int n,e;                  //分别为顶点数和边数 VertexType vex[maxSize];  //存放结点信息
}MGraph;
typedef struct
{int a,b;int w;
}Road;
int cmp(Road r1,Road r2)
{return r1.w<r2.w;}Road road[maxSize];
int v[maxSize];
int getRoot(int a)
{while(a!=v[a])a=v[a];return a;
}
void Kruskal(MGraph g,int &sum,Road road[])
{int i;int N,E,a,b;N=g.n;E=g.e;sum=0;for(i=0;i<N;++i)v[i]=i;sort(road,road+E,cmp);for(i=0;i<E;++i){a=getRoot(road[i].a);b=getRoot(road[i].b);if(a!=b){v[a]=b;sum+=road[i].w;}}
}
/*
5 8
0 1 5 1 4 4 0 3 2 3 4 3
1 2 3 2 3 6 0 2 1 2 4 2
*/
int main()
{MGraph g;int n,e,sum;cin>>n>>e; g.n=n,g.e=e*2;int c=0;for(int i=0;i<e;++i){int a,b,w;cin>>a>>b>>w;road[c].a=a,road[c].b=b,road[c++].w=w;road[c].a=a,road[c].b=b,road[c++].w=w;}Kruskal(g,sum,road);cout<<sum<<endl;
}

最小生成树(库鲁斯卡尔算法)相关推荐

  1. 生成最小树(普里姆算法与库鲁斯卡尔算法)

    普里姆算法 基本思想:以某个顶点为起点,逐步找各顶点上最小权值的边来构建最小树. 代码如下: vector<vector<int>> edges;//邻接矩阵 int N;// ...

  2. java实现 库鲁斯卡尔算法 kruskal(算法设计与分析作业)

    java实现 库鲁斯卡尔算法kruskal(算法设计与分析作业) package package1;import java.util.Arrays;public class alg {//判断tar是 ...

  3. 数据结构实验-图-普里姆算法、克鲁斯科尔算法

    数据结构实验-图-普里姆算法.克鲁斯科尔算法 (实验)自定义存储结构,并设计程序完成如下功能: ①创建图:创建带权无向图. ②普里姆算法:采用普里姆算法依次输出最小生成树中各条边. ③克鲁斯科尔算法: ...

  4. 我所知道的十大常用算法之克鲁斯尔算法(最小生成树)

    前言需求 今天我们学习的是克鲁斯尔算法,我们还是从一个场景里引入看看 有7个村庄(A, B, C, D, E, F, G) ,现在需要修路把7个村庄连通 1.各个村庄的距离用边线表示(权) ,比如 A ...

  5. 无向图的最小生成树(克鲁斯卡尔算法 Kruskal)

    引子: 克鲁斯卡尔算法的作用是:构建图的最小生成树. 克鲁斯卡尔算法 Kruskal的构造过程: 1.初始化图:n个顶点,n个连通分量(如果两个顶点的连通分量相同,表示两点在同一个连通图中).把所有的 ...

  6. 曼哈顿距离最小生成树与莫队算法(总结)

    曼哈顿距离最小生成树与莫队算法(总结) 1 曼哈顿距离最小生成树 曼哈顿距离最小生成树问题可以简述如下:  给定二维平面上的N个点,在两点之间连边的代价为其曼哈顿距离,求使所有点连通的最小代价.  朴 ...

  7. python分类算法的应用_Python基于sklearn库的分类算法简单应用示例

    Python基于sklearn库的分类算法简单应用示例 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  Python基于sklearn库的分类算法简单应用示例.tx ...

  8. 最小生成树 Kruskal 和 Prim算法及堆优化

    目录 生成树/最小生成树是什么. 一.Kruskal算法 Kruskal模板 二.Prim算法及堆优化 1.遍历 Prim 普通模板 2.堆优化 Prim 堆优化模板 解决最小生成树的问题之前,我们先 ...

  9. 大文件MD5计算 C语言 (从OpenSSL库中分离算法:三)

    从OpenSSL库中分离算法-MD5算法-大文件MD5计算 续上述博客 小文件计算MD5时,可以把文件数据一次性都读到内存中计算,但当文件很大时,将文件一次性读到内存中是不可行的,此时,需要对文件数据 ...

最新文章

  1. LeetCode简单题之基于排列构建数组
  2. java静态链表_数据结构笔记:静态链表(C语言)
  3. win10只有c盘怎么分区_电脑技巧分享:安装win10系统时系统盘C盘分区多大空间适合?...
  4. 设计模式心得笔记--简单工厂
  5. python好吗-老男孩学习python好吗?
  6. 应该怎么做一个登录功能?
  7. mahout贝叶斯算法开发思路(拓展篇)1
  8. get\post常用参数使用说明
  9. docker 安装及打springboot jar打镜像
  10. python背景颜色怎么随机_Python中的随机颜色
  11. 2021年90后脱发调研报告
  12. android 手势类的封装,Android手势识别简单封装类
  13. SpringBoot2.0使用Spring WebFlux之HelloWord篇
  14. 《人月神话》阅读体会(三)
  15. python会议室系统预定_会议室预定系统
  16. atitit.技术选型方法总结为什么java就是比.net有前途
  17. wcf 双向 java_我的WCF之旅 (11): 再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯...
  18. 中班音乐会跳舞的机器人_中班音乐律动机器人
  19. 记录从网页下载ppt的过程。
  20. Java 流行的工作流引擎

热门文章

  1. 【檀越剑指大厂--redis】redis基础篇
  2. 【Python 基于EasyOCR库进行图片文字识别】
  3. JNI HelloWorld 亲测可以。
  4. 短信验证码后端-接口设计
  5. Android通过浏览器打开App并传递参数
  6. oracle10g lsnrctl,linux下oracle10g lsnrctl没反应 sqlplus正常 bug4518443
  7. matlab spline三次样条插值x,Spline(三次样条插值)
  8. iosclient发现_世界杯送流量活动项目总结
  9. 用Python写一个桌面便签(每日计划本)
  10. 2015.2,对任意正整数n,求xn,要求运算时间复杂度为o(logn).例如x30=x15*x15.