首页 > 其他分享 >最小生成树问题模板

最小生成树问题模板

时间:2024-12-02 20:22:01浏览次数:3  
标签:int 最小 生成 挂载 节点 模板

图有最小生成树的充要条件:图是可达的

常见表述:从某节点出发可到达其余节点

#include<bits/stdc++.h>
using namespace std;

struct edge
{
    int a,b,w;
    bool operator<(edge &other)
    {
        return w<other.w;
    }
}e[10001];
int n,m;int p[10001];

int find(int x)
{
    if(p[x]!=x)
        p[x]=find(p[x]);
    return p[x];
}
int main()
{
    cin>>n>>m;
    for(int i=0;i<m;i++)
    {
        cin>>e[i].a>>e[i].b>>e[i].w;
        p[i]=i;
    }
    for(int i=1;i<=n;i++)
        p[i]=i;
    sort(e,e+m);
    for(int i=0;i<m;i++)
    {
        int a=e[i].a;int b=e[i].b;
        a=find(a);b=find(b);
        if(a!=b)
        {
            p[a]=b;
            if(find(1)==find(n))
            {
                cout<<e[i].w<<endl;
                break;
            }
        }
    }
}

注意点:

1.定义的是<,>根据编译器不同可能报错
2.find函数递归进行路径压缩,将所有节点挂载到根节点上。
3.p[a]=b将一棵树的根挂载到另一棵树上。

标签:int,最小,生成,挂载,节点,模板
From: https://www.cnblogs.com/Arc-ux/p/18582615

相关文章

  • LeetCode 2413[最小偶倍数]
    题目链接LeetCode2413[最小偶倍数]详情实例提示题解思路判断奇偶性奇数乘以2并返回偶数直接返回代码classSolution{public:intsmallestEvenMultiple(intn){if(0==(n%2))returnn;return2*n;}};......
  • 2024-12-02:划分数组得到最小的值之和。用go语言,你有两个数组,nums 和 andValues,它们的
    2024-12-02:划分数组得到最小的值之和。用go语言,你有两个数组,nums和andValues,它们的长度分别为n和m。定义数组的“值”为其最后一个元素。你的任务是将nums划分为m个不重叠的连续子数组。对于第i个子数组[li,ri],该子数组的所有元素通过按位与运算后,结果必须等......
  • 支持无限改稿和投喂,这3款AI生成论文工具为什么这么火?
    大学生最烦恼的是什么?不是期末考,也不是早八课,而是——无从下手的毕业论文啊!眼瞅着DDL要到了,也知道自己得尽快完成论文,可是手在键盘上脑子里却空无一物,心里慌得不行,根本不知道要如何搞定论文。别慌,看这里,AI论文生成网站,这个辅助工具就是救星!有多简便?!可以说从选题到内容初稿生......
  • 定时器实现之最小堆(一)
    1.概述        定时器是一种用于在指定时间后执行特定任务或操作的机制。在计算机科学和编程中,定时器通常用于实现延时操作、周期性任务调度等功能。         对于定时器的实现,核心分为两大块,分别是容器和触发方式,容器就是组织定时器中定时任务的数据结构,触......
  • 使用vue3-json-excel插件数据过长生成的数据变为科学计数法
    存在的问题:借用vue3-json-excel插件导出的xls的tagID这一项数据过长出现科学技术法。方法1.网上给出的办法是将长数字转换为字符串。我的数据tagID这个数据接口返回来的本就是字符串。所以改方法不行......
  • Clover Configurator四叶草生成苹果序列号,苹果系统修改三码/五码方法
    Windows上安装苹果系统,不是所有电脑都支持,必须得硬件支持才行,不然会出现各种问题。苹果的生态是一套完整的闭环,每一个苹果硬件产品都有独一无二的SMBIOSID,也就是机型ID,当然其中也包括整个Mac产品线,这个机型ID决定了下面要提到的序列号、主板序列号和UUID,它们都有和机型ID......
  • 《python基于RSA算法的数字签名生成软件》毕业设计项目
    大家好我是蓝天,混迹在java圈的辛苦码农。今天要和大家聊的是一款《python基于RSA算法的数字签名生成软件》毕业设计项目。项目源码以及部署相关请联系蓝天,文末附上联系信息。......
  • 《python基于RSA算法的数字签名生成软件》
    大家好我是小村学长,混迹在java圈的辛苦码农。今天要和大家聊的是一款《python基于RSA算法的数字签名生成软件》毕业设计项目。项目源码以及部署相关请联系小村学长,文末附上联系信息。......
  • VS2017 设置 类模板参数推导(CTAD, Class Template Argument Deduction)
    ''#includestd::mutexm_mutex;...std::lock_guardlock(m_mutex);//A..以上代码编译提示C2955,没有模板参数改为std::lock_guardstd::mutexlock(m_mutex);编译成功但是有的代码用A处的写法,编译就成功。原因虽然C++17引入了类模板参数推导(CTAD,Class......
  • 11.26实验 24:模板方法模式
    [实验任务一]:数据库连接对数据库的操作一般包括连接、打开、使用、关闭等步骤,在数据库操作模板类中我们定义了connDB()、openDB()、useDB()、closeDB()四个方法分别对应这四个步骤。对于不同类型的数据库(如SQLServer和Oracle),其操作步骤都一致,只是连接数据库connDB()方法不同,现使......