当前位置: 首页 > news >正文

克鲁斯卡尔算法(C++)

目录

 克鲁斯卡尔算法

​编辑代码:

结果:

 克鲁斯卡尔算法

克鲁斯卡尔算法是一种用于求解最小生成树的算法。最小生成树是指一棵包含了所有节点的连通图,并且边的权值之和最小。

克鲁斯卡尔算法的基本思想是,每次选择图中最小的边,如果这条边的加入不会形成环,则将它加入最小生成树中。重复以上过程,直到所有节点都被纳入最小生成树中。

具体实现时,可以使用并查集来判断加入一条边是否会形成环。在实现过程中,需要先对边按照权值进行排序,然后遍历每条边进行判断。

代码:

#include<iostream>
#include<algorithm>
using namespace std;
typedef int vertextype;
typedef struct node
{vertextype head;//边起始点vertextype tail;//边终点int w;//权值
}edge;
bool cmp(edge a, edge b)//权值小的排前面
{return a.w < b.w;
}
int main()
{edge e[100];int n, t, vexset[100];//顶点数、边数、连通分量cout << "输入顶点数和边数";cin >> n >> t;for (int i = 1; i <= n; i++)//初始化连通分量{vexset[i] = i;}cout << "输入边:" << endl;for (int i = 0; i < t; i++){int v1, v2, w;cin >> v1 >> v2 >> w;e[i].head = v1;e[i].tail = v2;e[i].w = w;}sort(e, e + t, cmp);int sum = 0;cout << "输出最小生成树:" << endl;for (int i = 0; i < t; i++){int v1, v2;v1 = e[i].head;v2 = e[i].tail;int vs1 = vexset[v1];//取v1连通分量int vs2 = vexset[v2];//取v2连通分量if (vs1 != vs2){sum += e[i].w;cout << v1 << " " << v2 << endl;for (int j = 1; j <= n; j++)//更新连通分量{if (vexset[j] == vs2)vexset[j] = vs1;}}}cout << "最小生成树权值:"<<sum;
}

结果:

http://www.lryc.cn/news/232046.html

相关文章:

  • 【Shell脚本 4】测试用
  • DC电源模块对效率有什么要求?
  • Linux在线安装MySQL8.0.24安装、MySQL数据备份和恢复
  • 【python】OpenCV—Rectangle, Circle, Selective Search(1.2)
  • MongoDB是一个NoSQL数据库,有着多种不同的命令和操作。以下是一些常见的MongoDB命令:
  • 网络运维Day19
  • 颜色标记txt和多根走线【Cadance进阶】
  • 你是想被ChatGPT改变,还是改变软件开发的未来?丨IDCF
  • Homography详解在MVSNet中的应用
  • linux parted给磁盘分区
  • 大数据毕业设计选题推荐-机房信息大数据平台-Hadoop-Spark-Hive
  • 使用 PYTORCH 进行图像风格迁移
  • vscode使用flake8设置单行最长字符限制设置失败的问题
  • SAP KO22内部订单预算BAPI与BDC
  • K8S篇之实现利用Prometheus监控pod的实时数据指标
  • 智能巡检软件怎么选?企业设备管理需要做什么?
  • 【python】Django——连接mysql数据库
  • 北京君正客户应用案例:掌静脉3D人脸猫眼视屏智能锁
  • 人工智能+游戏 会带来什么
  • 人工智能基础_机器学习030_ElasticNet弹性网络_弹性回归的使用---人工智能工作笔记0070
  • Python算法——平衡二叉树(AVL)
  • 公开可用的API 合集
  • 单片机编程原则
  • 开源短剧付费变现小程序源码系统+在线开通会员+在线充值 带完整的搭建教程
  • 基于Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用能力
  • 电商平台为什么需要及时部署ssl证书?
  • 卡码网语言基础课 | 12. 位置互换
  • 用DOM来读取XML时要注意的一些概念
  • openresty安装配置,执行shell脚本
  • 解决Dockerfile中 Could not initialize class sun.awt.X11FontManager错误