c++题目_【模板】最小生成树Prim

news2024/9/26 3:31:39
题目描述

这是一道最小生成树Prim的模板题,本题与【模板】最小生成树Kruskal,仅仅只有nn和mm的大小不同
给出一个无向图,求出最小生成树,如果该图不连通,则输出orz
 

输入

第一行输入2个正整数n,mn,m,代表这个无向图有nn个点,mm条边。(1≤n≤1e3,1≤m≤2e6)(1≤n≤1e3,1≤m≤2e6)

后面输入m行,每行有33个正整数 x,y,zx,y,z,代表第i条边所连接的2个点和这条边的权值,可能存在重边。(1≤x,y≤n,1≤z≤10000)(1≤x,y≤n,1≤z≤10000)

本题输入输出过多
c++请用scanf输入printf输出,或者加入 ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);这段语句

输出

如果给的无向图是连通的,也就是能够求出一个最小生成树,请输出这个最小生成树的权值,否则请输出orz

样例输入1         复制
3 3
1 2 1
1 3 10
2 3 1

样例输出1         复制
2

提示

选择<1,2,1><2,3,1>这两条边此时可以生成一个最小生成树,此时权值也就是1+1=2

  1. 我首先定义了常量N来表示节点的最大数量,以及定义了变量nmvdisans,以及数组fn表示节点的数量,m表示边的数量,v表示节点之间的边权值,dis表示每个节点到最小生成树的最小距离,ans表示最小生成树的权值,f表示节点是否已经加入最小生成树。

  2. hs函数中,我首先通过输入获取了节点数量n和边的数量m。然后使用memset函数和循环,将二维数组v和一维数组dis初始化为正无穷,将数组f初始化为0。

  3. 接下来,我通过输入获取了每条边的起点、终点和权值,并将权值存入二维数组v中。

  4. 我将起始节点的最小距离初始化为0,并通过循环找到每个节点到最小生成树的最小距离,并将最小距离加入最小生成树的权值中。

  5. 最后,我输出了最小生成树的权值。

下面是带注释的代码

#include <bits/stdc++.h>
using namespace std;
//定义各个常量与变量 
const int N=1e3+1;
int n,m,v[N][N],dis[N],ans=0;
bool f[N];


//真正的主函数 
void hs(){
	
	
	//  初始化 
	cin>>n>>m;
	memset(v,0x3f,sizeof(v));
	memset(dis,0x3f,sizeof(dis));
	memset(f,0,sizeof(f));
	for(int i=1;i<=m;i++){
		int p,q,x;
		cin>>p>>q>>x;
		if(x<v[p][q]){
			v[p][q]=x;
			v[q][p]=x;
		}
	}
	dis[1]=0;
	
	
	for(int i=1;i<=n;i++){
		int x=-1;
		for(int j=1;j<=n;j++)if(!f[j] && dis[j]<=10000 && ( x==-1||dis[j]<dis[x] ) )x=j;
		if(x==-1){//如果x等于-1,那么图不连通 
			cout<<"orz"<<"\n";//输出orz加换行 
			return ;//返回 
		}
		ans+=dis[x];
		f[x]=1;
		for(int j=1;j<=n;j++){
			if(!f[j])dis[j]=min(dis[j],v[x][j]);
		}
	}
	
	cout<<ans;//输出ans  
	
	return ;//返回 
}

int main() {//主函数 
	
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);//流加速 
    
    hs();//真正的主函数 
    
    return 0;//返回值 
}




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

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

相关文章

【自然语言处理】实验三:新冠病毒的FAQ问答系统

目录 前言 1.新建data_process.py 1.1导入包并定义功能模块1用来读取问题和答案FAQ的文件 1.2功能模块2&#xff1a;进行问题/问题列表处理&#xff08;正则化&#xff0c;分词&#xff09; 1.3功能模块3&#xff1a;处理输入的问题 1.4功能模块4&#xff1a;计算输入问题与问题…

Java | Leetcode Java题解之第403题青蛙过河

题目&#xff1a; 题解&#xff1a; class Solution {public boolean canCross(int[] stones) {int n stones.length;boolean[][] dp new boolean[n][n];dp[0][0] true;for (int i 1; i < n; i) {if (stones[i] - stones[i - 1] > i) {return false;}}for (int i 1…

redis windows安装包下载路径

https://github.com/tporadowski/redis/releases 通过网盘分享的文件&#xff1a;Redis-x64-5.0.14.1.zip 链接: https://pan.baidu.com/s/12XQOfKB75yajJ0fJLzl4rQ?pwd1234 提取码: 1234

C++数据结构-树的概念及分类介绍(基础篇)

1.什么是树 树是数据结构中的一种&#xff0c;其属于非线性数据结构结构的一种&#xff0c;我们前文所提到的数据结构多数都是线性的&#xff0c;这也是较为简单的数据结构&#xff0c;而接下来的树与图均属于非线性数据结构&#xff0c;也是概念极多的一类。 树是由结点或顶…

软件设计师容易考吗?

一、软考软件设计师难吗 软考软件设计师考试对于不同的人来说&#xff0c;难度可能有所差异。然而&#xff0c;总体来说&#xff0c;软考软件设计师考试是相对较难的考试&#xff0c;需要考生具备扎实的软件设计理论知识和实践经验。 从各地2024年上半年软考合格人数的公布情…

Python | Leetcode Python题解之第405题数字转换为十六进制数

题目&#xff1a; 题解&#xff1a; CONV "0123456789abcdef" class Solution:def toHex(self, num: int) -> str:ans []# 32位2进制数&#xff0c;转换成16进制 -> 4个一组&#xff0c;一共八组for _ in range(8):ans.append(num%16)num // 16if not num:b…

c++ 红黑树(带头结点)

想必在看到这篇文章的时候&#xff0c;你一定是带着问题去搜索的&#xff0c;一定是对红黑树已经有了初步大致的认识&#xff0c;已经知道了红黑树的性质与普通红黑树的功能与如何代码实现&#xff0c;但是莫一天突然看到了带头结点的红黑树&#xff0c;肯定是对此有一些疑惑的…

linux/ubuntu国内镜像安装gitleaks敏感信息扫描工具教程及避坑点

1、背景 利用gitleaks扫描git仓库或者文件 GitHub上有比较详细的教程&#xff0c;但是由于每个人的安装环境不同&#xff0c;坑很多&#xff0c;网上能查到的有效信息也比较少。这里就以我坑很多的环境为例&#xff0c;捋一下步骤。 GitHub - gitleaks/gitleaks: Protect an…

<<编码>> 第 12 章 二进制加法器--半加器 示例电路

异或门 info::操作说明 鼠标单击逻辑输入切换 0|1 状态 异或门的符号为 或门 符号输入处再添加一道弧线. 异或门的输出等价于将两个输入分别接入一个或门和一个与非门, 再对这两者输出结果取与的结果. 读者可对照着 或门, 与非门 和 与门 的真值表在示例电路中验证这一点. prim…

蓝桥杯单片机STC15F2K60S2第十二届省赛代码详细讲解(附完整代码)

本文是写第十二届的蓝桥杯省赛代码&#xff0c;如果是新手的话&#xff0c;欢迎去观看我专门为新手写的一篇。也欢迎收录该专栏。 蓝桥杯单片机STC15F2K60S2第十三届省赛代码详细讲解&#xff08;附完整代码&#xff09; 专栏&#xff1a; 蓝桥杯单片机 接下来直接上正文。…

初阶数据结构【TOP】- 11.普通二叉树的介绍 - 1. (细致,保姆~~!)

文章目录 前言一、普通二叉树的链式结构二、 造树三、普通二叉树的遍历四、遍历完整代码五、总结 前言 本篇文章笔者将会对普通二叉树部分进行细致的讲解 , 本篇主要包括以下内容: 二叉树链式结构的介绍 ,二叉树的遍历. 笔者会一步一步分析带学者领略递归的美好~~ 一、普通二叉…

4.接口测试基础(Jmter工具/场景二:一个项目由多个人负责接口测试,我只负责其中三个模块,协同)

一、场景二&#xff1a;一个项目由多个人负责接口测试&#xff0c;我只负责其中三个模块&#xff0c;协同 1.什么是测试片段&#xff1f; 1&#xff09;就相当于只是项目的一部分用例&#xff0c;不能单独运行&#xff0c;必须要和控制器&#xff08;include,模块&#xff09;一…

驾驶员注意力分神状态检测系统源码分享

驾驶员注意力分神状态检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of …

ZYNQ FPGA自学笔记

一 ZYNQ FPGA简介 ZYNQ FPGA主要特点是包含了完整的ARM处理系统&#xff0c;内部包含了内存控制器和大量的外设&#xff0c;且可独立于可编程逻辑单元&#xff0c;下图中的ARM内核为 ARM Cortex™-A9&#xff0c;ZYNQ FPGA包含两大功能块&#xff0c;处理系统Processing System…

[C++]——vector

&#x1f307;个人主页&#xff1a;_麦麦_ &#x1f4da;今日小句&#xff1a;快乐的方式有很多种&#xff0c;第一种便是见到你。 目录 一、前言 二、vector的介绍及使用 2.1 vector的介绍 2.2 vector的使用 2.2.1 vector的定义&#xff08;构造函数&#xff09; 2.2.2…

【物联网】一篇文章带你认识RFID(射频识别技术)

基本原理 RFID是Radio Frequency Identification的缩写&#xff0c;即射频识别技术&#xff0c;其工作原理基于电磁感应理论&#xff08;射频一般指微波&#xff0c;频段在1-100GHz&#xff0c;适用于短距离通信&#xff09;&#xff0c;是一种非接触式的自动识别技术&#xf…

unity 图片置灰shader

我和chatgpt真强&#xff01; 在 Unity 编辑器中&#xff0c;右键点击 Assets 文件夹&#xff0c;选择 Create -> Shader -> Unlit Shader。shader代码如下&#xff0c;尽管我看的不是很懂&#xff0c;但确实有用 Shader "Custom/GrayScaleShader" {Properti…

沉浸式体验Stability AI最新超强AI图片生成模型Ultra

2024年9月4日&#xff0c;亚马逊云科技在Amazon Bedrock上新了Stability AI最新的的三款文本图像生成模型&#xff1a;他们分别是Stable Image Ultra、Stable Diffusion 3 Large 和 Stable Image Core。全新的模型在处理多主题提示词、图像质量和图片排版上较上一代模型有显著提…

解决win11 使用wsl工具,不能使用systemctl

使用systemctl命令出现报错&#xff1a; System has not been booted with systemd as init system (PID 1). Can‘t operate. 默认情况下并不启用 systemd&#xff0c;而是使用了其他轻量级的初始化系统&#xff08;SysV init初始化系统&#xff09;。这导致一些需要 system…

如何精确统计Pytorch模型推理时间

文章目录 0 背景1 精确统计方法2 手动synchronize和Event适用场景 0 背景 在分析模型性能时需要精确地统计出模型的推理时间&#xff0c;但仅仅通过在模型推理前后打时间戳然后相减得到的时间其实是Host侧向Device侧下发指令的时间。如下图所示&#xff0c;Host侧下发指令与De…