最小生成树(库鲁斯卡尔算法)
#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;
}
最小生成树(库鲁斯卡尔算法)相关推荐
- 生成最小树(普里姆算法与库鲁斯卡尔算法)
普里姆算法 基本思想:以某个顶点为起点,逐步找各顶点上最小权值的边来构建最小树. 代码如下: vector<vector<int>> edges;//邻接矩阵 int N;// ...
- java实现 库鲁斯卡尔算法 kruskal(算法设计与分析作业)
java实现 库鲁斯卡尔算法kruskal(算法设计与分析作业) package package1;import java.util.Arrays;public class alg {//判断tar是 ...
- 数据结构实验-图-普里姆算法、克鲁斯科尔算法
数据结构实验-图-普里姆算法.克鲁斯科尔算法 (实验)自定义存储结构,并设计程序完成如下功能: ①创建图:创建带权无向图. ②普里姆算法:采用普里姆算法依次输出最小生成树中各条边. ③克鲁斯科尔算法: ...
- 我所知道的十大常用算法之克鲁斯尔算法(最小生成树)
前言需求 今天我们学习的是克鲁斯尔算法,我们还是从一个场景里引入看看 有7个村庄(A, B, C, D, E, F, G) ,现在需要修路把7个村庄连通 1.各个村庄的距离用边线表示(权) ,比如 A ...
- 无向图的最小生成树(克鲁斯卡尔算法 Kruskal)
引子: 克鲁斯卡尔算法的作用是:构建图的最小生成树. 克鲁斯卡尔算法 Kruskal的构造过程: 1.初始化图:n个顶点,n个连通分量(如果两个顶点的连通分量相同,表示两点在同一个连通图中).把所有的 ...
- 曼哈顿距离最小生成树与莫队算法(总结)
曼哈顿距离最小生成树与莫队算法(总结) 1 曼哈顿距离最小生成树 曼哈顿距离最小生成树问题可以简述如下: 给定二维平面上的N个点,在两点之间连边的代价为其曼哈顿距离,求使所有点连通的最小代价. 朴 ...
- python分类算法的应用_Python基于sklearn库的分类算法简单应用示例
Python基于sklearn库的分类算法简单应用示例 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: Python基于sklearn库的分类算法简单应用示例.tx ...
- 最小生成树 Kruskal 和 Prim算法及堆优化
目录 生成树/最小生成树是什么. 一.Kruskal算法 Kruskal模板 二.Prim算法及堆优化 1.遍历 Prim 普通模板 2.堆优化 Prim 堆优化模板 解决最小生成树的问题之前,我们先 ...
- 大文件MD5计算 C语言 (从OpenSSL库中分离算法:三)
从OpenSSL库中分离算法-MD5算法-大文件MD5计算 续上述博客 小文件计算MD5时,可以把文件数据一次性都读到内存中计算,但当文件很大时,将文件一次性读到内存中是不可行的,此时,需要对文件数据 ...
最新文章
- LeetCode简单题之基于排列构建数组
- java静态链表_数据结构笔记:静态链表(C语言)
- win10只有c盘怎么分区_电脑技巧分享:安装win10系统时系统盘C盘分区多大空间适合?...
- 设计模式心得笔记--简单工厂
- python好吗-老男孩学习python好吗?
- 应该怎么做一个登录功能?
- mahout贝叶斯算法开发思路(拓展篇)1
- get\post常用参数使用说明
- docker 安装及打springboot jar打镜像
- python背景颜色怎么随机_Python中的随机颜色
- 2021年90后脱发调研报告
- android 手势类的封装,Android手势识别简单封装类
- SpringBoot2.0使用Spring WebFlux之HelloWord篇
- 《人月神话》阅读体会(三)
- python会议室系统预定_会议室预定系统
- atitit.技术选型方法总结为什么java就是比.net有前途
- wcf 双向 java_我的WCF之旅 (11): 再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯...
- 中班音乐会跳舞的机器人_中班音乐律动机器人
- 记录从网页下载ppt的过程。
- Java 流行的工作流引擎
热门文章
- 【檀越剑指大厂--redis】redis基础篇
- 【Python 基于EasyOCR库进行图片文字识别】
- JNI HelloWorld 亲测可以。
- 短信验证码后端-接口设计
- Android通过浏览器打开App并传递参数
- oracle10g lsnrctl,linux下oracle10g lsnrctl没反应 sqlplus正常 bug4518443
- matlab spline三次样条插值x,Spline(三次样条插值)
- iosclient发现_世界杯送流量活动项目总结
- 用Python写一个桌面便签(每日计划本)
- 2015.2,对任意正整数n,求xn,要求运算时间复杂度为o(logn).例如x30=x15*x15.