【数据结构与算法】Kruskal最小生成树

原理

在这里插入图片描述

算法实现

主要函数:

  1. 查并集: find 点 x 的祖先
  2. edge的比较大小函数
  3. kruskal函数
#include<iostream>
#include<algorithm>

using namespace std;


struct Edge{
    
    int a,b,w;
    
}edg[200010];
int p[200010];
int n,m;

bool compareEdg(const Edge &a, const Edge &b ){
    return a.w< b.w;
}

int findx(int x){
    if(p[x]!=x ){
        p[x] = findx(p[x]);
    }
    
    return p[x];
    
}

void kruskal(){
    int res=0;
    int cnt =0;
    for(int i=1; i<=m; i++){
        int pa = findx(edg[i].a);
        int pb = findx(edg[i].b);
        if(pa!=pb){
            p[pa] = pb;
            res += edg[i].w;
            cnt++;
            //cout<<"边长"<<edg[i].w<<"左边点"<<edg[i].a<<"右边点"<<edg[i].b<<endl;
        }
        else{
            continue;
        }
        
    }
    if(cnt < n-1){
        cout<<"impossible";
    }
    else{
        cout<<res;
    }
}


int main(){
    cin>>n>>m;
    for(int i=1; i<=n; i++){
        p[i] = i;
    }
    for(int i=1; i<=m; i++){
        cin>>edg[i].a>>edg[i].b>>edg[i].w;
        
    }
    sort(edg+1, edg+m+1, compareEdg);
    kruskal();
    
    
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis 教程系列之Redis 安装(二)

Windows 下安装 下载地址:Releases tporadowski/redis GitHub。 Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。 打开文件夹,内容如下: 打开一个 cmd 窗口 使用 c…

Apache TinkerPop 与 Gremlin 快速介绍

TinkerPop &#xff0c;Gremlin TinkerPop 是一个 Apache 项目&#xff0c;它为图数据库提供了一个通用的图处理框架。Gremlin 是 TinkerPop 框架的一部分&#xff0c;它是一个图遍历语言&#xff0c;用于在图数据库中执行复杂的图遍历查询。 Apache TinkerPop Apache Tinker…

AI程序员革命:探析Devin的登场与编程未来

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

【前端Vue】HR-saas中台项目开发md文档第1篇:vuex基础-介绍,vuex基础-初始化功能【附代码文档】

HR-saas中台管理项目开发完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;vuex基础-介绍,vuex基础-初始化功能,vuex基础-state,vuex基础-mutations,vuex基础-actions,vuex基础-getters。项目课设计&#xff0c;人力资源的环境搭建vue-element-admin的了解和…

react native 键盘事件

在做修改密码功能是发现他的键盘第一次调起之后然后收起键盘焦点不会消失而且键盘也不会再调起来了 我门线引入需要的组件 import { StyleSheet, View, TextInput, Keyboard, TouchableWithoutFeedback, } from react-native; import React, {useEffect, useState, useRef} fr…

【数据结构】Java中Map和Set详解(含二叉搜索树和哈希表)

目录 Map和Set详解 1.二叉搜索树 2.Map常见方法 3.Set常见方法 4.哈希表 Map和Set详解 Map&#xff1a;一种键值对结构&#xff0c;hashMap中键和值均可以为空&#xff0c;hashTable中则不可以存放null值 Set&#xff1a;一种集合&#xff0c;不能存放重复元素&#xff0c…

解决前端跨域问题

前端跨域问题 该问题是由于前端的服务路径或端口和后台的不一致所导致的 Springboot跨域设置 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; …

手撕算法-二叉树的层序遍历

描述 分析 层序遍历&#xff0c;需要用到队列。 代码 代码1&#xff1a;独立bfs函数 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(i…

(C语言)浮点数在内存中的存储详解

1. 浮点数 常见的浮点数&#xff1a;3.14159、 1E10等 &#xff0c;浮点数家族包括&#xff1a; float、double、long double 类型。 浮点数表示的范围&#xff1a; float.h 中定义. 2. 浮点数的存储 我们先来看一串代码&#xff1a; int main() {int n 9;float* pFloa…

BufferedInputStream解读

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java之IO流啦&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好习惯&am…

实现文本溢出提示效果

实现效果 本文的需求是文本溢出时显示省略号&#xff0c;鼠标移入文本时提示完整的文字内容。 实现代码 <div class"container" onmouseover"handleMouseEnter(this)">鼠标移入显示全部内容</div><style> .container {width: 100px;o…

力扣每日一题 2024/3/23 统计桌面上的不同数字

题目描述 用例说明 思路讲解 给定整数n&#xff0c;找出循环十亿天后桌上的数字。可以先通过一天来找找规律。 第一天 n%i1 &#xff08;1<i<n&#xff09;只有n-1符合.加入桌面 第二天(n-1)%i1 &#xff08;1<i<n-1&#xff09;只有n-2符合 加入桌面 依次类推…

第十三届蓝桥杯JavaB组省赛真题 - 星期计算

解题思路&#xff1a; 方法一&#xff1a; 20的22次方是一个比较大的数&#xff0c;long和int都装不下这么大的数&#xff0c;因此需要使用下面的方法&#xff0c;如果 a, b, p 都是整数&#xff0c;且 p 是正数&#xff0c;那么&#xff1a;(a * b) % p (a % p * b % p) % …

【C语言】linux内核pci_set_drvdata函数

一、讲解 该函数pci_set_drvdata是Linux内核中用于PCI设备的一个辅助函数&#xff0c;其主要作用是设置给定PCI设备的驱动程序私有数据。这个函数的参数包括一个指向pci_dev结构体的指针pdev&#xff0c;该结构体描述了一个PCI设备&#xff0c;以及一个void *类型的指针data&a…

我父亲曾经告诉我:“等你到了35岁,你应该足够聪明地意识到...”。

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

iostream、fstream、sstream、string、vector、unordered_map、stack

iostream 用于输入输出操作&#xff0c;包含了处理标准输入输出流的功能&#xff08;例如&#xff0c;cin, cout, cerr等&#xff09;。 #include <iostream>int main() {int number;std::cout << "Enter a number: ";std::cin >> number;std::…

算法-最短路径

图的最短路径问题是一个经典的计算机科学和运筹学问题&#xff0c;旨在找到图中两个顶点之间的最短路径。这种问题在多种场景中都有应用&#xff0c;如网络路由、地图导航等。 解决图的最短路径问题有多种算法&#xff0c;其中最著名的包括&#xff1a; 1.迪杰斯特拉算法 (1).…

windows 系统下(nacos1.x) nacos-1.1.3 链接数据库 mysql8.0 出错分析

** windows 系统下&#xff08;nacos1.x&#xff09; nacos-1.1.3 链接数据库 mysql8.0 出错分析 ** 1、首先以下方法亲测无效&#xff1a; 1&#xff09;需要在数据库 URL 链接配置信息中 添加 allowPublicKeyRetrievaltrue 无效 db.url.0**&allowPublicKeyRetrievalt…

web前端之行为验证码、不同设备和屏幕尺寸呈现不同大小、元素宽度根据视口宽度进行调整、元素或图片裁剪、图片验证码

MENU 前言版本一(htmlJScss)版本二(htmlJScsscanvas) 前言 1、版本一的样式比较齐全&#xff1b; 2、版本二的JS逻辑和功能效果比较完善&#xff0c;且是别人的代码&#xff0c;后续会对样式进行完善。[Gitee | 哔哩哔哩]&#xff1b; 3、两个版本各有千秋&#xff0c;主要学习…

使用 ArcGIS Pro 和 Google Earth Engine 可视化地表温度

在这项研究中,利用 Landsat 热数据通过各种方法检查了 2013 年和 2023 年恰纳卡莱省的地表温度变化。使用了 NDVI、大气层顶部、亮度温度、植被比例和地表温度等公式。研究结果表明,从热图像中获得的数据,特别是地表温度(LST),是土地解释的重要资源。 研究区域:恰纳卡莱…