★实验任务

寡人心系天下为国为民,想要在历史中留下点痕迹,就必须要让国家强盛起来,正所谓想致富先修路,寡人觉得去修路,那些吃干饭的大臣给了寡人很多条要修的道路,奈何国库空虚,寡人只能选择其中一些道路,把重点城市连接在一起,并且这些道路的花费要最少,寡人决定让你来接受这个任务,替寡人分忧。

★数据输入

第一行有两个正整数n,m,表示有n个城市(城市按照1到n编号),m条道路可选择,接下来有m行,每行有三个正整数u,v,c,分别表示这一条道路连通u和v且花费黄金c两。(1<=n<=50000,n-1<=m<=200000,1<=c<=10000)

★数据输出

输出能连通所有城市的道路的最小花费。

输入示例

3 3
1 2 3
2 3 4
1 3 2

输出示例

5

最小生成树问题

解法:采用kurskal算法

Kurskal算法:对于一张图,将其所有边存入一个数组

每条边有三个属性,两个端点和一个边权值

将数组内的边按权值从小到大排序,得到一个边的大小有序数组

从权值最小的边开始遍历,若该边的两条端点连通则遍历下一条边

如果不连通,则将两个端点连通,如果要求最小生成树的权值,则多设一个sum

用sum来统计最小生成树的权值,即此时把该边权值加入sum中,直到遍历了所有边为止

则得到最小生成树

判断两个端点是否连通用并查集来实现;

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=1e5+7;
struct Edge{ll u,v,w;
}edge[N*5];
ll pre[N];
ll n,m;
ll Find(ll x){//并查集,能够连通的点有一个公共祖先if(pre[x]==x)return x;pre[x] = Find(pre[x]);return pre[x];
}
bool cmp(Edge x,Edge y){return x.w<y.w;//边按权值从小到大排序
}
ll ans = 0;
ll num = 0;
ll kruskal(){//最小生成树for(int i = 1;i<N;i++)pre[i] = i;//独立连通分量初始化为自身sort(edge,edge+m,cmp);//边排序ll u,v;for(int i = 0;i<m&&num<n-1;i++){//已经得到的边数num最大为n-1,因为为最小生成树ll temp1 = Find(edge[i].u);//查找该边两端点是否连通;ll temp2 = Find(edge[i].v);if(temp1!=temp2){//如果不连通,就执行连通操作ans += edge[i].w;//统计最小生成树的权值num++;pre[temp1] = temp2;//两点连通}}return ans;//返回最小消耗}
int main(){cin>>n>>m;for(int i = 0;i<m;i++){cin>>edge[i].u>>edge[i].v>>edge[i].w;}ll res = kruskal();cout<<res;}

算法与数据结构实验题 10.23 寡人的难题——Kurskal算法相关推荐

  1. 算法与数据结构实验题 10.23 寡人的难题

    算法与数据结构实验题 10.23 寡人的难题 ★实验任务 寡人心系天下为国为民,想要在历史中留下点痕迹,就必须要让国家强盛起来,正所谓想致富先修路,寡人觉得去修路,那些吃干饭的大臣给了寡人很多条要修的 ...

  2. 算法与数据结构实验题 10.16 被Gank的亚索

    算法与数据结构实验题 10.16 被Gank的亚索 ★实验任务 "哈撒给~",亚索一个Q打中了残血的维克多并挂上了点燃,正当亚索准备单杀维克多时,突然一声大喝!从两边草丛中窜出了两 ...

  3. 算法与数据结构实验题 5.18 小孩的游戏

    ★实验任务 一群小孩子在玩游戏,游戏规则是这样子,给了一些卡片,上面有数字,现在要把卡片按照某一种序列排好,让这些数字重新链接组合成一个大数,求最大的数是什么. ★数据输入 第一行一个整数N 接下来N ...

  4. 算法与数据结构实验题 6.4 Summary

    ★实验任务 可怜的 Bibi 丢了好几台手机以后,看谁都像是小偷,他已经在小本本上记 下了他认为的各个地点的小偷数量. 现在我们将 Bibi 的家附近的地形抽象成一棵有根树.每个地点都是树上的 一个节 ...

  5. 算法与数据结构实验题 4.17 Maze

    ★实验任务 有一只小仓鼠身处在一个 N*M 迷宫之中,它现在想知道它最快能什么时候到达出口. 迷宫是由 ' . ' ' # ' 构成,' . '表示可以通行,'#'表示墙壁,不能通行,现在小仓鼠在'S ...

  6. 算法与数据结构实验题 7.4 玩游戏的亚索 (最小支撑树)

    1.题目: 2.代码: #include<cstdio> #include<iostream> #include<algorithm> using namespac ...

  7. 算法与数据结构实验题 8.21 森林冰火人

    本题的关键在于:每有一个雪人融化成为"0"的体积,就把它移到整个数组的最前面去.这样可以减少用时.第一次交的时候卡在这个上面了,time limit exceeded! #incl ...

  8. 九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试八十题(10.23)

    引言 自发表上一篇文章至今(事实上,上篇文章更新了近3个月之久),blog已经停了3个多月,而在那之前,自开博以来的21个月每月都不曾断过.正如上一篇文章支持向量机通俗导论(理解SVM的三层境界)末尾 ...

  9. 实验题7.1 实现二分查找的算法

    [实验目的] (1)掌握查找的概念: (2)熟练掌握二分查找的原理及实现方法. [实验准备] (1)阅读教材中二分查找的相关内容: (2)熟悉二分查找的算法. [实验要求] (1)采用函数调用的方式完 ...

最新文章

  1. 难忘的一天——装操作系统(二)
  2. SecureCRT中sqlplus,使用Backspace删除时 ^H^H
  3. 为什么PUE只说明了数据中心能效的一部分?
  4. 【图像分割模型】多感受野的金字塔结构—PSPNet
  5. 配置EIGRP默认路由
  6. 趣学python3(7)-循环语句(1)
  7. 使用外置tomcat部署spring boot程序需添加servlet-api
  8. NeurIPS 2018 | 腾讯AI Lab:可自适应于不同环境和任务的强化学习方法
  9. 关于求职简历的碎碎念。
  10. 程序员如何用gRPC谈一场恋爱
  11. iOS运行时-使用Runtime向Category中添加属性以及运行时介绍
  12. 三维数组设置索引_python3三维数据结构 —— panel
  13. linux 最大磁盘 16t,linux ext4无法使用超过16T磁盘的解决办法
  14. python-gui-pyqt5的使用方法-4--自定义信号的初识--多参数的使用
  15. ADC0808ad转换实验程序c语言,模数转换器ADC0808的应用
  16. SQL Server添加Northwind数据库
  17. 注意力机制与V_net神经网络的介绍与实现
  18. 为 Form Library 开发工作流,如何读取 InfoPath 表单内容
  19. Filecoin(FIL) 通过PHP生成 f1 开头的地址
  20. (01)开发环境准备

热门文章

  1. 程序员月入百万的真相!
  2. 数据备份:备份文件/文件夹怎么操作?
  3. 【Spring Boot】--整合RabbitMQ
  4. ssm+Vue计算机毕业设计学科竞赛管理(程序+LW文档)
  5. 黑莓8700软件_莓友shadywb分享:我眼中的黑莓
  6. MaxPab兔源多克隆抗体(D01)的功能和应用类型
  7. 生成特定于查询的类API摘要 (Generating Query-Specific Class API Summaries)
  8. 嵩天老师python123测验7: 文件和数据格式化 (第7周)
  9. 【Windows包管理器(choco)】choco : 无法将“choco”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正 确,然后再试一次。
  10. python 倒数两列_相机标定之张正友标定法数学原理详解(含python源码)