搜索与图论:Prim

Prim算法求最小生成树:

每次将离连通部分的最近的点和点对应的边加入的连通部分,连通部分逐渐扩大,最后将整个图连通起来,并且边长之和最小。

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;const int N = 510;int g[N][N];//存储图
int dist[N];//存储各个节点到生成树的距离
bool st[N];//节点是否被加入到生成树中
int pre[N];//节点的前驱节点,用于输出各个边时需要,该题不需要
int n, m;//n 个节点,m 条边void prim()
{memset(dist,0x3f3f3f3f, sizeof dist);//初始化距离数组为一个很大的数(10亿左右)int res= 0;dist[1] = 0;//从 1 号节点开始生成 for(int i = 0; i < n; i++)//每次循环选出一个点加入到生成树{int t = -1;for(int j = 1; j <= n; j++)//每个节点一次判断,直到遍历完全部的点,找到未在生成树的点的最小距离点{if(!st[j] && (t == -1 || dist[j] < dist[t]))//如果没有在树中,且到树的距离最短,则选择该点t = j;}//如果孤立点,直返输出不能,然后退出if(dist[t] == 0x3f3f3f3f){printf("impossible\n");return;}st[t] = 1;// 选择该点res += dist[t];//生成树总长度加该点的长度,就是新的总长度for(int i = 1; i <= n; i++)//更新生成树外的点到生成树的距离{//从 t 到节点 i 的距离小于原来距离,则更新。//因为以前i的距离是到树的某个点的距离,现在树加入了t节点,所以判断是否i跟t更近是则更新i到树的距离,!st是判断是否是树外的点if(dist[i] > g[t][i] && !st[i]){dist[i] = g[t][i];//更新距离pre[i] = t;//从 t 到 i 的距离更短,i 的前驱变为 t.}}}printf("%d\n",res);return;
}void getPath()//输出各个边,该题不需要
{for(int i = n; i > 1; i--)//n 个节点,所以有 n-1 条边。{printf("%d %d\n",i,pre[i]);// i 是节点编号,pre[i] 是 i 节点的前驱节点。他们构成一条边。}
}int main()
{memset(g, 0x3f3f3f3f, sizeof(g));//各个点之间的距离初始化成很大的数scanf("%d%d",&n,&m);//输入节点数和边数while(m --){int a, b, w;scanf("%d%d%d",&a,&b,&w);//输入边的两个顶点和权重g[a][b] = g[b][a] = min(g[a][b],w);//存储权重,因为是无向图,所以ab和ba都要赋值}prim();//求最小生成树return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/125890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一种支持热插拔的服务端插件设计思路

定位 服务端插件是一个逻辑扩展平台,提供了一个快速托管逻辑的能力。 核心特点 高性能:相对于RPC调用,没有网络的损耗,性能足够强劲。 高可靠:基于线程隔离,保证互不影响,插件的资源占用或崩溃等问题不直接影响业务。 部署快:不需要发布审核流程, 插件本身逻辑简短,…

【Overload游戏引擎细节分析】PBR材质Shader---完结篇

PBR基于物理的渲染可以实现更加真实的效果&#xff0c;其Shader值得分析一下。但PBR需要较多的基础知识&#xff0c;不适合不会OpenGL的朋友。 一、PBR理论 PBR指基于物理的渲染&#xff0c;其理论较多&#xff0c;需要的基础知识也较多&#xff0c;我在这就不再写一遍了&…

JVM虚拟机:如何调整堆空间的大小?

对内存的调优 如上所示,从物理角度来说呢,堆内存就是蓝色的区域,从逻辑角度来说,堆内存包含这个红色的部分,调优肯定是条物理的大小了,我们先来看一下物理内存的大小是多少? 如上所示,我们通过maxMemory获取到java虚拟机试图使用的最大内存量,默认为物理内存的1/4,比我…

SEO优化应该注意哪些细节?

SEO优化是一项细致的工作&#xff0c;需要关注细节&#xff0c;因为在很多情况下&#xff0c;被忽略的细节决定了优化的成败。俗话说&#xff1a;细节决定成败。 以下是我知道的一些小细节&#xff0c;希望能对一些新站长有所帮助。 1.内容非常重要。尝试使用原始或伪原始。原件…

where怎么等于多个值,sql where多个值

在SQL中&#xff0c;可以使用IN和OR操作符来匹配多个值&#xff0c;以在WHERE语句中执行过滤。以下是一些示例&#xff1a; 使用IN操作符匹配多个值 可以使用IN操作符来匹配多个可能的值&#xff0c;如下所示&#xff1a; SELECT * FROM 表名 WHERE 字段名 IN (值1, 值2, 值3…

Linux期末复习——多线程编程

线程概述 线程基本编程 函数说明 pthread_create(): 创建线程&#xff0c;成功返回0pthread_exit(): 主动退出线程&#xff0c;成功返回0pthread_join(): 挂起线程等待结束&#xff0c;成功返回0pthread_cancel在别的线程中终止另一个线程的执行&#xff0c;成功返回0 示例…

初识CSS层叠样式表

文章目录 CSS介绍CSS层叠样式表1.CSS组成2.CSS语法结构3.注释语法4.引入CSS的多种方式 CSS选择器1.CSS基础选择器2.CSS组成选择器3.分组与嵌套4.CSS属性选择器5.CSS伪类选择器6.CSS伪元素选择器 选择器优先级CSS继承选择器的优先级 CSS样式调节字体样式文本颜色文本属性 边框di…

在 Visual Studio 中远程调试 C++ 项目

目录 一、说明二、下载远程工具1. 官网下载2. 自己电脑上拷贝 三、 运行远程工具四、本机Visual Studio配置五、自动部署 一、说明 参考官方文档&#xff1a;https://learn.microsoft.com/zh-cn/visualstudio/debugger/remote-debugging-cpp?viewvs-2022 二、下载远程工具 …

数据库深入浅出,数据库介绍,SQL介绍,DDL、DML、DQL、TCL介绍

一、基础知识&#xff1a; 1.数据库基础知识 数据(Data)&#xff1a;文本信息(字母、数字、符号等)、音频、视频、图片等&#xff1b; 数据库(DataBase)&#xff1a;存储数据的仓库&#xff0c;本质文件&#xff0c;以文件的形式将数据保存到电脑磁盘中 数据库管理系统(DBMS)&…

clickhouse插入代替更新

1.使用ReplacingMergeTree引擎 CREATE TABLE xxx ( \ id_card String,\ session_id String,\ timestamp DateTime(Asia/Shanghai),\ realname String,\ phone_num String,\ email String ) \ ENGINE ReplacingMergeTree() \ PARTITION BY toY…

【小工具】WebClient远程调用,返回值将Long类型转换为String,自定义注解

文章目录 1. 使用WebClient使用远程调用2. 返回值将Long类型转换为String3. 自定义注解 1. 使用WebClient使用远程调用 <!-- SpringBoot webflux --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

腾讯云轻量应用服务器的“镜像”操作系统选择方法

腾讯云轻量应用服务器镜像怎么选择&#xff1f;如果是用来搭建网站可以选择宝塔Linux面板腾讯云专享版&#xff0c;镜像系统根据实际使用来选择&#xff0c;腾讯云百科txybk.com来详细说下腾讯云轻量应用服务器镜像的选择方法&#xff1a; 腾讯云轻量应用服务器镜像选择 轻量…

BI零售数据分析,告别拖延症,及时掌握一线信息

在日常的零售数据分析中&#xff0c;经常会因为数据量太大&#xff0c;分析指标太多且计算组合多变而导致数据分析报表难产&#xff0c;零售运营决策被迫拖延症。随着BI数据可视化分析技术的发展&#xff0c;智能化、可视化、自助分析的BI数据分析逐渐成熟&#xff0c;形成一套…

嵌入式软件工程师面试题——2025校招社招通用(六)

说明&#xff1a; 面试题来源于网络书籍&#xff0c;公司题目以及博主原创或修改&#xff08;题目大部分来源于各种公司&#xff09;&#xff1b;文中很多题目&#xff0c;或许大家直接编译器写完&#xff0c;1分钟就出结果了。但在这里博主希望每一个题目&#xff0c;大家都要…

2、NLP文本预处理技术:词干提取和词形还原

一、说明 在上一篇文章中&#xff0c;我们解释了文本预处理的重要性&#xff0c;并解释了一些文本预处理技术。在本文中&#xff0c;我们将介绍词干提取和词形还原主题。 词干提取和词形还原是两种文本预处理技术&#xff0c;用于将单词还原为其基本形式或词根形式。这些技术的…

第03章_基本的SELECT语句

第03章_基本的SELECT语句 讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.com 1. SQL概述 1.1 SQL背景知识 1946 年&#xff0c;世界上第一台电脑诞生&#xff0c;如今&#xff0c;借由这台电脑发展…

云计算是什么

一文读懂云计算&#xff1a;发展历程、概念技术与现状分析 - 知乎 “现阶段所说的云计算&#xff0c;已经不单单是一种分布式计算&#xff0c;而是分布式计算、效用计算、负载均衡、并行计算、网络存储、热备份冗杂和虚拟化等计算机技术混合演进并跃升的结果。” 云计算的关键…

oracle 重启步骤及踩坑经验

oracle 重启步骤及踩坑经验 标准重启步骤 切换到oracle用户 su - oracle关闭监听 lsnrctl stop杀掉oracle有关进程 ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCALNO|awk {print $2}|xargs kill -9#查询pid ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCALNO|awk {p…

恒驰服务 | 华为云数据使能专家服务offering之数仓建设

恒驰大数据服务主要针对客户在进行智能数据迁移的过程中&#xff0c;存在业务停机、数据丢失、迁移周期紧张、运维成本高等问题&#xff0c;通过为客户提供迁移调研、方案设计、迁移实施、迁移验收等服务内容&#xff0c;支撑客户实现快速稳定上云&#xff0c;有效降低时间成本…

上海中优城市万豪酒店推出全新国际IP童趣主题房,独特住宿体验中国首秀

2023年10月30日&#xff0c;中国上海 – 近日&#xff0c;上海中优城市万豪酒店正式推出由全球品牌娱乐公司孩之宝官方授权打造的小马宝莉和变形金刚主题客房&#xff0c;以创意客房、新奇体验和丰富礼遇&#xff0c;为童游家庭或年轻的动漫迷们开启沉浸式入住之旅&#xff0c;…