代码随想录:53、寻宝

embedded/2024/12/22 11:24:10/

53.寻宝

采用两种最小生成树算法分别来做一下

Prim算法

  #include <iostream>#include<vector>
#include<climits>using namespace std;#define endl '\n'int main(){std::ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);int v,e;int x,y,k;cin>>v>>e;vector<vector<int>>grid(v+1,vector<int>(v+1,10001));while(e--){cin>>x>>y>>k;grid[x][y]=k;grid[y][x]=k;}vector<int> mindist(v+1,10001);vector<bool>isintree(v+1,0);for(int i=1;i<v;i++){int cur=-1;int minval=INT_MAX;for(int j=1;j<=v;j++)if(!isintree[j]&&mindist[j]<minval){minval=mindist[j];cur=j;}isintree[cur]=1;for(int j=1;j<=v;j++){if(!isintree[j]&&grid[cur][j]<mindist[j])mindist[j]=grid[cur][j];}}int result=0;for(int i=2;i<=v;i++)result+=mindist[i];cout<<result;return 0;}

kruskal算法

  #include <iostream>#include<vector>
#include<algorithm>using namespace std;#define endl '\n'int n=10001;
vector<int>father(n,-1);
struct Edge
{int l,r,val;
};void init()
{for(int i=0;i<n;i++)father[i]=i;
}
int find(int u)
{return u==father[u]?u:father[u]=find(father[u]);
}void join(int u,int v)
{u=find(u);v=find(v);if(u==v)return ;father[v]=u;
}int main(){std::ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);int v,e;int v1,v2,v3;vector<Edge>edges;int result_val=0;cin>>v>>e;while(e--){cin>>v1>>v2>>v3;edges.push_back({v1,v2,v3});}sort(edges.begin(),edges.end(),[](const Edge&a,const Edge&b){return a.val<b.val;});vector<Edge> result;init();for(Edge edge:edges){int x=find(edge.l);int y=find(edge.r);if(x!=y){result.push_back(edge);result_val+=edge.val;join(x,y);}}cout<<result_val;return 0;}

http://www.ppmy.cn/embedded/125026.html

相关文章

制作一个流水灯,控制发光二极管由上至下再由下至上反复循环点亮显示,每次点亮一个发光二级管(Proteus 与Keil uVision联合仿真)

一、代码编写 &#xff08;1&#xff09;编写程序来控制发光二极管由上至下的反复循环流水点亮&#xff0c;每次点亮一个发光二极管。 #define uchar unsigned char // 定义uchar为unsigned char类型uchar tab[] {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f, 0x7f, 0x…

如何保证 Redis 与数据库的数据一致性

在现代的应用开发中&#xff0c;Redis 作为一种高性能的内存数据库&#xff0c;常常被用来缓存热点数据&#xff0c;以提高系统的响应速度和吞吐量。然而&#xff0c;由于 Redis 是内存数据库&#xff0c;与传统的关系型数据库&#xff08;如 MySQL&#xff09;在数据存储和管理…

第五章:软件工程 (5.1软件工程定义--5.2软件需求)

5.1 软件工程定义 软件工程由方法、工具和过程3个部分组成。 方法&#xff1a; 完成软件项目的技术手段&#xff0c;支持整个软件生命周期 工具&#xff1a; 是人们在开发软件的活动中智力和体力的扩展与延伸&#xff0c;它自动或半自动地支持软件的开发和管理&#xff0c;支…

Sym-NCO:利用对称性进行神经组合优化

文章目录 Abstract1 Introduction2 组合优化马尔可夫决策过程中的对称性2.1 组合马尔可夫决策过程2.2 CO-MDP中的对称性3 对称神经组合优化3.1 通过LSym-RL正则化REINFORCE的问题和解决方案对称性3.2 通过预先识别的对称性学习不变表示: L i n v L_{inv} Linv​4 相关工作5 Ex…

回到原点再出发

原文What Goes Around Comes Around作者Michael Stonebraker & Joseph M. Hellerstein其他译文https://zhuanlan.zhihu.com/p/111322429 1. 摘要 本文总结了近35年来的数据模型方案&#xff0c;分成9个不同的时代&#xff0c;讨论了每个时代的方案。我们指出&#xff0c;…

Golang | Leetcode Golang题解之第456题132模式

题目&#xff1a; 题解&#xff1a; func find132pattern(nums []int) bool {candidateI, candidateJ : []int{-nums[0]}, []int{-nums[0]}for _, v : range nums[1:] {idxI : sort.SearchInts(candidateI, 1-v)idxJ : sort.SearchInts(candidateJ, -v)if idxI < idxJ {ret…

【Vue】Vue 快速教程

Vue tutorial 参考&#xff1a;教程 | Vue.js (vuejs.org) 该教程需要前置知识&#xff1a;HTML, CSS, JavaScript 学习前置知识&#xff0c;你可以去 MDN Vue framework 是一个 JavaScript framework&#xff0c;以下简称 Vue&#xff0c;下面是它的特点 声明式渲染&#xff…

【CTF Web】Pikachu 本地文件包含 Writeup(文件包含漏洞+GET请求)

File Inclusion(文件包含漏洞)概述 文件包含&#xff0c;是一个功能。在各种开发语言中都提供了内置的文件包含函数&#xff0c;其可以使开发人员在一个代码文件中直接包含&#xff08;引入&#xff09;另外一个代码文件。 比如 在PHP中&#xff0c;提供了&#xff1a; includ…