首页 > 其他分享 >【模板】最小生成树-kruskal

【模板】最小生成树-kruskal

时间:2024-11-16 19:41:07浏览次数:1  
标签:return int kruskal father 最小 cost find 模板

int father[5010], n, m;
int find(int x)//找根函数,记得进行路径压缩
{
    if(father[x] == x) return x;
    else return father[x] = find(father[x]);
}
int same(int x, int y)//简化代码
{
    if(find(x) == find(y)) return 1;
    else return 0;
}
struct edge
{
    int u, v, cost;//边的两个端点,cost是边的长度
}e[200010];
int cmp(edge e1, edge e2)
{
    return e1.cost < e2.cost;
}
int kruskal()
{
    sort(e + 1, e + 1 + m, cmp);
    int res = 0;//边权总和
    int cnt = 0;//边的数量
    for(int i = 1; i <= m; i++)
    {
        if(same(e[i].u, e[i].v) == 0)
        {
            cnt++;
            res += e[i].cost;
            father[find(e[i].u)] = find(e[i].v);
        }
    }
    if(cnt == n - 1) return res;
    else return -1;
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> m;
    for(int i = 1; i <= n; i++)
    {
        father[i] = i;
    }
    for(int i = 1; i <= m; i++)
    {
        cin >> e[i].u >> e[i].v >> e[i].cost;
    }
    int ans = kruskal();
    if(ans == -1) cout << "orz\n";
    else cout << ans << '\n';
    return 0;
}

标签:return,int,kruskal,father,最小,cost,find,模板
From: https://www.cnblogs.com/joylz/p/18549733

相关文章

  • HbuilderX 插件开发-模板创建
    实现思路使用HbuilderX打开某个文档时右键点击的时候获取当前打开的文档内容使用API替换为自己的模板示例package.json{ "id":"SL-HbuilderX-Tool", "name":"SL-HbuilderX-Tool", "description":"快速创建html,vue2模板", "displayName":......
  • 江苏科技大学大二《数据结构》课内实验报告模板答案
    江苏科技大学《数据结构》实验报告(2024/2025学年第1学期)学生姓名:学生学号:院系:计算机学院专业:考核得分:2024年12月实验一线性表的操作一、实验目的掌握线性表的基本操作在存储结构上的实现,其中以单链表的操作作为重点。二、实验题目1.以单......
  • 大数据可视化模板免费分享 | 11种类别
    引言随着大数据技术在企业管理、金融分析、运营监控等领域的深入应用,越来越多的开发者和企业需要专业的大数据模板。本篇文章整理了多个高质量的大数据模板合集,帮助用户轻松上手、快速构建属于自己的数据分析系统。模板合集概览本次分享的大数据模板包含了11类,分别是金融类......
  • 【模板进阶】std::is_union、std::is_class、std::integral_constant
    一、std::is_unionstd::is......
  • 【模板】Runs
    学习资料:Lyndon&Runs-洛谷专栏。yyc讲的太好了啊,我就不抄了。做Lyndon分解的Duval算法在Runs的求解中出现次数非常高,请一定记住它。if(tl+tr>=r-l+1)这一行是算的刚刚好的,这里对应的LyndonRoot是\([l,r)\),然后求出lcp,lcs分别是\(tl,tr\),则这个ru......
  • 【Axure模板素材】白蓝灰配色精美后台 M2
    【Axure】白蓝灰配色精美后台M2AxureMost官网【Axure】白蓝灰配色精美后台M2-AxureMost模版定位致力于实用的移动端、桌面端模版,拿到即可开展工作。没有多余的杂乱页面移动端我们会采集国内市面上100+的界面进行行业划分和汇总页面,复刻物美的UI界面进行模版制作......
  • 发一段简洁大气的404纯代码错误页的模板,有需要的直接复制拿走
    ​ 分享一段简洁大气的404纯代码错误页的模板,有需要的直接复制拿走。<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">......
  • 旋转数组的最小数字
    题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{2,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.解题思路看到“递增数组”和“查找最小值”,就要想到二分法。有两种切割方法,一......
  • 三、模板与配置(下)
    三、模板与配置8、WXSS模板样式-全局样式和局部样式类型说明适用情景注意点全局样式定义在app.wxss中的样式,作用于每一个页面。当有一些通用的样式规则需要应用于整个小程序时,比如全局的字体大小、颜色、布局等。全局样式可能会被局部样式覆盖,需要注意样式的优先级。当......
  • [c/cpp]:模板指针
    [c/cpp]:模板指针    一、程序代码1#include<iostream>234intmsg(intx)5{6std::cout<<"\t[msg]#\tx:="<<x<<std::endl;7returnx;8}91011//generalpointer12int(*fun)(int);1314......