挖坑(kruskal/prim)

news/2025/3/13 0:16:42/文章来源:https://www.cnblogs.com/gxjcnblogs/p/18758725


对于prim算法
我们要更新一个点到一个已经在在树里的点的最小距离,作为答案,最开始要将起点加入优先队列,并且最开始要把d数组初始化为最大值
对于kruskal算法
我们需要用到并查集,对所有的边的边权进行排序,如果边的两个不在一个集合,就可以连接两点并让答案加上边权,如果两个点在统一个集合则不能连接,不然会成环,个人认为kruskal算法更简单

/*#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
const int N=1e5+5;
struct node{int id,dis;
};
int d[N];
vector<node>v[N];
bool operator<(node n1,node n2){return n1.dis>n2.dis;
}
int n,m;
int vis[N];
long long  ans=0;
bool prim(){int cnt=0;priority_queue<node>q;memset(d,0x3f,sizeof(d));q.push({1,0});d[1]=0;while(!q.empty()){int u=q.top().id;q.pop();if(vis[u])continue;vis[u]=1;ans+=d[u];cnt++;for(int i=0;i<v[u].size();i++){//if(vis[v[u][i].id])continue;if(d[v[u][i].id]>v[u][i].dis){d[v[u][i].id]=v[u][i].dis;q.push({v[u][i].id,d[v[u][i].id]});}}}return cnt==n;
}
int main(){cin>>n>>m;while(m--){int a,b,x;cin>>a>>b>>x;v[a].push_back({b,x});v[b].push_back({a,x});}if(prim())cout<<ans;else cout<<"orz";return 0;
}*/
//kruskal
#include<iostream>
#include<algorithm>
using namespace std;
#define int long long
const int N=5*1e5+5;
int n,m;
struct edge{int x,y,z;//起点,终点,边权
}e[N];
int f[N];
void init(){for(int i=1;i<=n;i++)f[i]=i;
}
int find(int x){return x==f[x]?x:f[x]=find(f[x]);
}
void unite(int x,int y){int rootx=find(x);int rooty=find(y);if(rootx!=rooty)f[rootx]=rooty;
}
bool cmp(edge e1,edge e2){return e1.z<e2.z;
}
signed main(){cin>>n>>m;init();for(int i=1;i<=m;i++){cin>>e[i].x>>e[i].y>>e[i].z;}sort(e+1,e+1+m,cmp);int ans=0;int cnt=0;for(int i=1;i<=m;i++){int rootx=find(e[i].x);int rooty=find(e[i].y);if(rootx==rooty)continue;else{ans+=e[i].z;cnt++;unite(e[i].x,e[i].y);if(cnt==n-1)break;}}if(cnt==n-1)cout<<ans;return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20242902程若曦-网络攻防第二次作业

1.实验要求指定域名的IP、DNS等信息查询获取好友IP地址,追踪到具体地理位置使用Nmap命令扫描靶机使用Nessus扫描靶机端口、自动扫描漏洞追踪自己网上足迹,查看隐私信息泄露问题2.实验过程 2.1 从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下…

Qt+libcef开发的多窗口客户端

目录一、概述二、效果展示1、智能 URL 交互,上网快人一步2、全屏切换,沉浸式体验随心所欲3、多样布局,满足多元需求4、右键菜单,操作便捷功能丰富5、免费使用6、定制7、费用8、下载连接三、相关文章 原文链接:Qt+libcef开发的多窗口客户端 一、概述 各位上网冲浪达人们,今…

25种均线经典形态图解

多头排列:特征:均线多头排列是指短期移动平均线在上,中期移动平均线居中,长期移动平均线在下;几根移动平均线同时向上移动的一种排列方式。技术含义:一般说来,无论大盘还是个股,均线出现多头排列表明多头力量较强,做多主力正在控制局势,这是一种比较典型的做多信号。空…

Vulnhub-FristiLeaks_1.3

一、靶机搭建 选择扫描虚拟机选择路径即可二、信息收集 靶机信息 产品名称:Fristileaks 1.3 作者:Ar0xA 发布日期: 2015 年 12 月 14 日 目标:获取root(uid 0)并读取标志文件 #UID为0,即root权限 难度:初级 说明: 一个为荷兰非正式黑客聚会Fristileaks制作的小…

3.7学习开发app

教师要求笔记本本地的后端运行后,通过自己开发的手机app可以访问到 本来准备看完一个四个小时视频,后来发现不需要,视频大部分讲解如何开发一个完整的app,但是通过查ai资料就足以完成需求 主要是后端配置可以被外部访问的配置 server.port=8080 server.address=0.0.0.0 和 …

巨变的时代

记录作者对manus的期待AI发展的速度真是以天为计量单位。感觉昨天满眼还都是DeepSeek,结果马上就被Trae给刷屏。 又在刚刚,一家名为Monica的中国公司又推出Manus。 我也尝试注册了一个邀请码,等到审核通过后再来围观看看怎么个事吧:0

个人作业2查重系统

查重系统这个作业属于哪个课程 软件工程这个作业要求在哪里 作业要求这个作业的目标 初步使用PSP表格,完成一个文本查重系统我的GitHubPSP表格PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)Planning 计划 45 60Estimate 估计这个任务需要多少时…

洛谷题单指南-图论之树-P3384 【模板】重链剖分/树链剖分

原题链接:https://www.luogu.com.cn/problem/P3384 题意解读:对树上某条最短路径(u到v的最短路径就是u-lca(u,v)-v)上的点修改(给每个点增加值)和查询(路径上所有点的和);对子树所有点修改(子树每个点增加值)和查询(子树所有点的和)。 解题思路: 暴力做法:路径修改和求和…

Kubernetes(K8S)内核优化常用参数详解

Kubernetes(K8S)内核优化常用参数详解小陈运维小陈运维,致力于运维技术博客文档分享。互相学习,相互进步。 2 人赞同了该文章 net.ipv4.tcp_keepalive_time=600 net.ipv4.tcp_keepalive_intvl=30 net.ipv4.tcp_keepalive_probes=10 net.ipv6.conf.all.disable_ipv6=1 net.…

北京大学DeepSeek系列教程:《DeepSeek与AIGC应用》

前言 今天大姚分享一个由北京大学推出的DeepSeek系列学习教程《DeepSeek与AIGC应用》,该文档全面介绍了DeepSeek-R1模型的技术特性、应用场景及其在AIGC领域的重要地位,同时深入剖析了AIGC的技术原理、应用价值、挑战及未来趋势,为听众提供了科学选择和使用AIGC工具的指导。…

fastadmin使用宝塔管理面板swoole4创建websocket服务并开启wss支持(改良可用)

1、安装swoole插件 我php的版本是7.4, Swoole4. 2、安装think-swoole 在网站站点根目录下运行composer require topthink/think-swoole:2.0.0特殊情况可强制安装composer require topthink/think-swoole:2.0.0 --ignore-platform-reqs 3、修改伪静态,加入代码location /wss …

均线实战精华:银山谷、金山谷、死亡谷,千万别小看,准确率极高

我们平常所说的“均线”,指的是移动平均线,即指定一个时间周期,将每日收盘价相加,除以这个周期,就得出该周期的平均价,用线将这些点连接,得到一条线。可以理解为周期内投资者买入股票的平均成本。 移动平均线的出现,对股票分析的“可视化”,贡献极大。自上世纪60年代,…