【算法】Prim算法(求最小生成树)
题目
给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。
求最小生成树的树边权重之和,如果最小生成树不存在则输出 impossible。
给定一张边带权的无向图 G=(V,E),其中 V 表示图中点的集合,E 表示图中边的集合,n=|V|,m=|E|。
由 V 中的全部 n 个顶点和 E 中 n−1 条边构成的无向连通子图被称为 G 的一棵生成树,其中边的权值之和最小的生成树被称为无向图 G 的最小生成树。
输入格式
第一行包含两个整数 n 和 m。
接下来 m 行,每行包含三个整数 u,v,w,表示点 u 和点 v 之间存在一条权值为 w 的边。
输出格式
共一行,若存在最小生成树,则输出一个整数,表示最小生成树的树边权重之和,如果最小生成树不存在则输出 impossible。
数据范围
1≤n≤500
1≤m≤10^5
图中涉及边的边权的绝对值均不超过 10000
思路
建立一个集合,将距离这个集合最近的节点s放入集合内部,然后使用节点s对其他节点到集合的距离进行更新,st[s]=true;表示节点s已经被放入集合,已经放入集合的元素不能再次被放入集合。然后开始下一次循环,每次放入一个节点到集合中,一共遍历n次(一共n个点)。
代码
#include<bits/stdc++.h>
#define N 510
using namespace std;
const int INF = 0x3f3f3f3f;
int n,m;// n个点,m条边
int g[N][N];// 表示点i到点j的距离(不邻接的话为正无穷)
int dist[N];// 表示点i到集合的最小距离
bool st[N];// 表示点i是否在集合内部int prim()
{memset(dist,0x3f,sizeof(dist));// 将距离初始化为正无穷int res = 0;for(int i = 0; i < n; i ++)// 遍历n个点{int t = -1;for(int j = 1; j <= n; j ++)// 遍历所有点if(!st[j] && (t == -1 || dist[t] > dist[j]))// 找到不在集合内部,并且距离集合最近的点t = j;if(i && dist[t] == INF) return INF; // 如果找不到距离小于正无穷的点,则代表这个图不连通,没有最小生成树(当i等于零时,集合还没有元素,不能进行判断)if(i) res += dist[t];// 将这条最小边加起来,是建成最小生成树的其中一条边(当i等于零时,集合还没有元素,不能进行判断)for(int j = 1;j <= n; j ++) dist[j] = min(dist[j],g[t][j]);// 使用这个点对这其他点进行更新st[t] = true;// 这个点已经在集合内部了}return res;// 返回最小生成树的长度
}int main()
{cin >> n >> m;// 输入点数,边数memset(g,0x3f,sizeof(g));while(m --){int a,b,c;cin >> a >> b >> c;// 输入点a到点b之间的距离g[a][b] = g[b][a] = min(g[a][b],c);// 建立无向图}int t = prim();if( t == INF ) cout << "impossible" << endl;else cout << t << endl;return 0;
}
相关文章:
【算法】Prim算法(求最小生成树)
题目 给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和,如果最小生成树不存在则输出 impossible。 给定一张边带权的无向图 G(V,E),其中 V 表示图中点的集合,E…...
go语言,yaml实现简单的workflow工作流
目录 1.创建一个yaml文件,名字可以是student.yaml 2.创建go文件测试 3.执行结果 本文章内容,只是一个简单的案例,但足够映射到一个大的项目中。 工作流作用:工作流的作用就是通过yaml配置文件,将关于本工作流的一个…...
BaiduMallServcie
说明 本文档指导业务开发步骤 BaiduMallServcie 说明一. 登录业务1.1 数据库设计1.1.1 管理员表1.1.2 角色表1.1.3 关联表 管理员表与角色表关联1.1.4 权限表1.1.5 关联表 角色表与权限表关联1.1.6 管理员登录日志表1.1.7 查询权限示例1.2 添加用户一. 登录业务 1.1 数据库设…...
vue3+jsx+antd的插槽写法之一
如果在jsx里面直接这样按照官方的写法是会报错的 正确写法是:...
Shell 学习之 if 命令
1. 执行流程 在 Shell 脚本中,if 是一个 控制流语句,用于进行条件判断,根据条件的结果执行相应的操作。 # 首先,Shell 会检查表达式 condition 返回的 boolean 值。 # 如果 condition 的值为真,则执行 then 代码块&a…...
android 同步 服务器 时间
要将 Android 设备与服务器同步时间,可以通过以下两种方式实现: NTP 协议同步时间 NTP(Network Time Protocol)是一种网络协议,用于同步计算机的时间。Android 设备可以使用 NTP 协议来同步服务器时间。 Android 应…...
10、电路综合-基于简化实频的宽带匹配电路设计方法
10、电路综合-基于简化实频的宽带匹配电路设计方法 网络综合和简化实频理论学习概述中的1-9介绍了SRFT的一些基本概念和实验方法,终于走到了SRFT的另一个究极用途,宽带匹配电路的设计。 1、之前的一些回顾与总结 之前也给出了一些电路综合的案例&…...
N-130基于springboot,vue校园社团管理系统
开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plus 本系…...
Syntax Error: TypeError: this.getOptions is not a function的解决(Vue)
报错信息: TypeError: this.getOptions is not a function 这个是在运行项目是遇到的问题 这个报错是类型错误,this.getOptions 不是一个函数 。这个错误一般就是less-loader库里的错误。 主要是less-loader版本太高,不兼容this.getOptions…...
使用 kube-downscaler 降低Kubernetes集群成本
新钛云服已累计为您分享772篇技术干货 介绍 Kube-downscaler 是一款开源工具,允许用户定义 Kubernetes 中 pod 资源自动缩减的时间。这有助于通过减少非高峰时段的资源使用量来降低基础设施成本。 在本文中,我们将详细介绍 kube-downscaler 的功能、安装…...
LeetCode热题100——哈希表
哈希表 1.两数之和2.字母异位词分组3.最长连续序列 1.两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。可以按任意顺序返回答案。 // 题解思路:使用哈…...
Kubeadm
目录 绪论:实验步骤 1、环境准备 2、所有节点安装docker 3、所有节点安装kubeadm,kubelet和kubectl 4、部署K8S集群 5、部署 Dashboard 6、安装Harbor私有仓库 master(2C/4G,cpu核心数要求大于2) 192.168.…...
【Overload游戏引擎细节分析】PBR材质Shader---完结篇
PBR基于物理的渲染可以实现更加真实的效果,其Shader值得分析一下。但PBR需要较多的基础知识,不适合不会OpenGL的朋友。 一、PBR理论 PBR指基于物理的渲染,其理论较多,需要的基础知识也较多,我在这就不再写一遍了&…...
C++设计模式_18_State 状态模式
State和Memento被归为“状态变化”模式。 文章目录 1. “状态变化”模式1.1 典型模式 2. 动机 (Motivation)3. 代码演示State 状态模式3.1 常规方式3.2 State 状态模式 4. 模式定义5. 结构( Structure )6. 要点总结7. 其他参考 1. “状态变化”模式 在组件构建过程中…...
详解final, abstract, interface关键字
一.final关键字 1.final关键字介绍 ——final关键字可以去修饰类、方法、属性和局部变量 2.final关键字的作用 1)final修饰类,这个类不能被其他类继承 2)final修饰方法,方法不能被重写 3)final修饰属性,属…...
统计特殊四元组
题记: 给你一个 下标从 0 开始 的整数数组 nums ,返回满足下述条件的 不同 四元组 (a, b, c, d) 的 数目 : nums[a] nums[b] nums[c] nums[d] ,且a < b < c < d 示例 1: 输入: nums [1,2,3…...
腾讯云轻量应用服务器“镜像”怎么选择合适?
腾讯云轻量应用服务器镜像怎么选择?如果是用来搭建网站可以选择宝塔Linux面板腾讯云专享版,镜像系统根据实际使用来选择,腾讯云百科txybk.com来详细说下腾讯云轻量应用服务器镜像的选择方法: 腾讯云轻量应用服务器镜像选择 轻量…...
Ruby模块和程序组织
和类一样,模块是一组方法和常量的集合。 和类不同,模块没有实例,取而代之的是可以将特殊模块的功能添加到一个类或者指定对象之中。 Class类是Module类的一个子类,因此每一个类对象也是一个模块对象 一、模块创建和基础应用 编写…...
14、SpringCloud -- WebSocket 实时通知用户
目录 实时通知用户需求:代码:前端:后端:WebSocket创建 websocket-server 服务添加依赖:配置 yml 和 启动类:前端:后端代码:注意:测试:总结:实时通知用户 需求: 用户订单秒杀成功之后,对用户进行秒杀成功通知。 弹出个提示框来提示。 代码: 前端:...
智能井盖传感器推荐,万宾科技助力城市信息化建设
随着科技产品更新换代进程加快,人工智能在人们日常生活之中逐渐普及开来,深入人们生活的方方面面,影响城市基础设施建设工程。例如在大街小巷之中的井盖作为城市基础建设的一个重要部分,一旦出现松动倾斜或凸起等异常问题…...
保姆级教程:在Qt 6.5桌面应用中集成WebRTC实现一对一视频通话(附完整源码)
Qt 6.5与WebRTC深度整合实战:构建企业级视频通话解决方案 1. 环境配置与依赖管理 在开始Qt 6.5与WebRTC的集成之旅前,我们需要搭建一个稳定的开发环境。不同于普通的Qt项目,这种集成对工具链和系统配置有特殊要求。 推荐开发环境配置&…...
混合AI路由器架构:实现高效智能任务分发
1. 混合AI路由器架构解析 在当今AI技术快速发展的背景下,超级代理系统正逐渐从理论走向实践。这类系统面临的核心挑战是如何在保证响应质量的同时,实现高效、低成本的规模化部署。混合AI路由器架构通过分层决策机制,巧妙地解决了这一难题。 …...
【免费下载】 STM32使用AD7799芯片读取AD值
STM32使用AD7799芯片读取AD值 【下载地址】STM32使用AD7799芯片读取AD值 本项目是基于STM32F103系列单片机,实现对AD7799高精度24位模数转换器(ADC)的数据采集。AD7799是一种高性能、低功耗的模拟到数字转换器,支持多种输入范围和…...
内容创作团队借助多模型能力提升文案生成质量与效率
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 内容创作团队借助多模型能力提升文案生成质量与效率 对于新媒体运营、内容营销或品牌文案团队而言,持续产出高质量、风…...
CodeBlocks 20.03 安装与汉化保姆级教程(附中文包下载与常见问题解决)
CodeBlocks 20.03 安装与汉化全流程实战指南 对于刚接触C/C开发的初学者来说,选择一款合适的集成开发环境(IDE)是迈入编程世界的第一步。CodeBlocks以其轻量级、跨平台和开源免费的特性,成为众多教育机构和自学者的首选。本文将带你从零开始,…...
量子安全与后量子密码学:awesome-quantum-software中的加密工具
量子安全与后量子密码学:awesome-quantum-software中的加密工具 【免费下载链接】awesome-quantum-software Curated list of open-source quantum software projects. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-quantum-software 在后量子计算时…...
智能字幕革命:Open-Lyrics如何用AI重新定义音频内容处理
智能字幕革命:Open-Lyrics如何用AI重新定义音频内容处理 【免费下载链接】openlrc Transcribe and translate voice into LRC file using Whisper and LLMs (GPT, Claude, et,al). 使用whisper和LLM(GPT,Claude等)来转录、翻译你的音频为字幕文件。 项…...
如何快速掌握FDS火灾模拟:面向新手的完整入门指南
如何快速掌握FDS火灾模拟:面向新手的完整入门指南 【免费下载链接】fds Fire Dynamics Simulator 项目地址: https://gitcode.com/gh_mirrors/fd/fds 你是否曾为建筑火灾风险评估而烦恼?是否需要对工业设施进行精确的火灾动力学分析?F…...
数据质量管理的过去、现在与未来:理解 2024 年数据测试、监控与数据可观察性
原文:towardsdatascience.com/the-past-present-and-future-of-data-quality-management-understanding-testing-monitoring-and-efd1350457eb?sourcecollection_archive---------1-----------------------#2024-05-25 数据领域正在发展,数据质量管理也…...
m4s-converter:一键解决B站缓存视频的格式兼容难题
m4s-converter:一键解决B站缓存视频的格式兼容难题 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经遇到过这样的场景&…...
