代码随想录算法训练营第五十七天 | 图论part07

news/2024/9/15 17:36:29/ 标签: 算法, 图论

53. 寻宝 prim算法

prim算法

#include <iostream>
#include <vector>
#include <fstream>
#include <climits>using namespace std;int main() {int v, e;int v1, v2, val;ifstream infile("input.txt");cin >> v >> e;vector<vector<int>> graph(v + 1, vector<int>(v + 1, INT_MAX));while (e--) {cin >> v1 >> v2 >> val;graph[v1][v2] = val;graph[v2][v1] = val;}/*for (int i = 0; i < v + 1; ++i) {for (int j = 0; j < v + 1; ++j) {cout << "v1: " << i << " v2: " << j << " val: " << graph[i][j] << endl;}}*/vector<bool> isInTree(v + 1, false);vector<int> minDest(v + 1, INT_MAX);// 找到第一个顶点// 将它放入树中// 更新minDestisInTree[1] = true;for (int j = 1; j < v + 1; ++j) {if (!isInTree[j] && graph[1][j] < minDest[j])minDest[j] = graph[1][j];}for (int i = 2; i < v; ++i) { // 只需要循环v-1次int curMin = 0;int minVal = INT_MAX;for (int j = 1; j < v + 1; ++j) {if (!isInTree[j] && minDest[j] < minVal) {minVal = minDest[j];curMin = j;}}isInTree[curMin] = true;for (int j = 1; j < v + 1; ++j) {if (!isInTree[j] && graph[curMin][j] < minDest[j])minDest[j] = graph[curMin][j];}}int result = 0;for (int i = 2; i <= v; ++i) {result += minDest[i];}cout << result << endl;return 0;
}

kruskal算法

算法思路是按边的val进行从小到大的排序,在不出现环的情况下,将这个边作为最小完全树的一部分。

#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>using namespace std;struct Edge {int v1, v2, val;
};void init(vector<int>& father) {for (int i = 0; i < father.size(); ++i) {father[i] = i;}
}int find(vector<int>& father, int u) {if (father[u] == u) return u;return father[u] = find(father, father[u]);
}bool same(vector<int>& father, int u, int v) {u = find(father, u);v = find(father, v);if (u == v) return true;else return false;
}void join(vector<int>& father, int u, int v) {u = find(father, u);v = find(father, v);if (u == v) return;else father[v] = u;
}int main() {int v, e;int v1, v2, val;ifstream infile("input.txt");cin >> v >> e;vector<Edge> edges;while (e--) {cin >> v1 >> v2 >> val;edges.emplace_back(Edge{v1, v2, val});}/*for (int i = 0; i < v + 1; ++i) {for (int j = 0; j < v + 1; ++j) {cout << "v1: " << i << " v2: " << j << " val: " << graph[i][j] << endl;}}*/vector<int> father(v + 1, 0);sort(edges.begin(), edges.end(), [](const Edge &a, const Edge &b) {return a.val < b.val;});init(father);int result = 0;for (Edge edge : edges) {if (!same(father, edge.v1, edge.v2)) {join(father, edge.v1, edge.v2);result += edge.val;}}cout << result << endl;return 0;
}

http://www.ppmy.cn/news/1519027.html

相关文章

jdbc-day01

_01Simple_JDBCDemo01 package com.jdbc._01Simple;import java.sql.*;/*** JDBC的第一个程序编写&#xff1a; 修改mydb库中的emp表中的7369这个员工的部门编号为30* 准备工作&#xff1a; 准备好项目&#xff0c;然后加载第三方jar包&#xff0c;即MYSQL的驱动程序。注意…

单线程Redis:Redis为什么这么快

1 Redis是不是单线程 Redis 使用后台线程执行耗时的 I/O 操作&#xff0c;以免阻塞主线程 bio_close_file&#xff1a;后台 I/O 线程之一&#xff0c;异步关闭文件 bio_aof_fsync&#xff1a;后台 I/O 线程之一&#xff0c;异步地将 AOF&#xff08;Append Only File&#xff…

告别PDF格式困扰,2024年PDF转换器推荐

PDF现在已经逐渐成为了文件传输的主流格式了&#xff0c;它有保存文件页面版式的优点&#xff0c;但是这个格式编辑对大部分人来说还是不那么方便&#xff0c;日常我们还是习惯将它们转换成我们常见的 文本格式来操作。今天我分享一下可以实现PDF格式转换的pdf转换器有哪些吧。…

Hive的体系架构、安装

目录 一、Hive体系架构二、安装1.嵌入模式2.本地模式和远程模式 一、Hive体系架构 二、安装 1.嵌入模式 特点 不需要Mysql支持&#xff0c;数据存储在自带的derby中只支持一个链接&#xff0c;即一时间只能有一个用户操作 部署 根据如下文件自行编写hive-site.xml hive-sit…

jmeter响应断言、json断言、断言持续时间、大小断言操作

在jmeter断言当中、常用的有响应断言、json断言、断言持续时间&#xff0c;大小断言等 一、响应断言 Apply to&#xff1a;断言应用的范围&#xff0c;这里默认&#xff0c;通常发出一个请求只触发一个服务器测试字段 响应文本&#xff0c;response响应体内的信息响应代码&am…

C语言备忘

环境搭建&#xff1a; 1.minGW下载&#xff1a;Index of /msys2/distrib/x86_64/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 安装完打开的窗口中运行&#xff1a; pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain运行完后把安装的程序bin放到…

day36

1.1 前言 C语言是完全面向过程语言&#xff0c;C是半面向过程半面向对象语言&#xff0c;C#、QT是完全面向对象的编程语言 C是对C语言的扩充&#xff0c;所有C语言的语法&#xff0c;C都可以直接使用 C的编译器是g,要求比C语言的编译器gcc更加严格 C的文件后缀为 .cpp .…

小柴带你学AutoSar系列三、标准和规范篇(3)ModeManagement

目录 ModeManagementGuide 2 Overall mechanisms and concepts 2.1 Declaration of modes 2.2 Mode managers and mode users 2.3 Modes in the RTE 2.4 Modes in the Basic Software Scheduler 2.5 Communication of modes 3 Configuration of the Basic Software Mod…

JAVA学习-练习试用Java实现“数据流的中位数”

问题&#xff1a; 中位数是有序列表中间的数。如果列表长度是偶数&#xff0c;中位数则是中间两个数的平均值。 例如&#xff0c; [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 3) / 2 2.5 设计一个支持以下两种操作的数据结构&#xff1a; void addNum(int num) - 从数据…

深入理解linux内核hung_task机制,最全!原创!

背景 最近的一个项目里&#xff0c;发生的问题近乎多半都是hangdetect的问题&#xff0c;之前一直对这种问题总是一知半解&#xff0c;发现主要是因为对此种维测方案(hangdetect/hangtask/watchdog/hungdetect)的理解不够深刻&#xff0c;而更深层次的原因是对于内核的各种机(…

基于JavaWeb开发的Java+Springboot+Vue+elememt美食论坛平台设计实现

基于JavaWeb开发的JavaSpringbootVueelememt美食论坛平台设计实现 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各…

夸父追日:第七章 回溯算法part02

今日收获&#xff1a;组合总和&#xff0c;组合总和Ⅱ&#xff0c;分割回文串 代码随想录&#xff1a;for循环横向遍历&#xff0c;递归纵向遍历&#xff0c;回溯不断调整结果集。 1. 组合总和 题目链接&#xff1a;39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; 思…

OpenCV小练习:人脸检测

OpenCV自带人脸检测模型&#xff0c;拿来就能用。所以“人脸检测”这个任务对于OpenCV而言真是太简单了——感叹一下&#xff1a;OpenCV太强大了&#xff01;相关的介绍文章在网上可以搜到很多&#xff0c;原本我觉得没必要再写一篇了。结果我在写练习代码的时候&#xff0c;还…

认识人工智能(AI,Artificial Intelligence)

人工智能(AI, Artificial Intelligence)是当今科技领域最引人注目的前沿技术之一。它的影响已渗透到各行各业,从日常生活中的虚拟助手到复杂的工业自动化系统,AI 的应用无处不在。本文将详细探讨人工智能的定义与发展历程、学习人工智能的目的、人工智能在实际生活中的应用…

MyBatis中的#{}和${}区别、ResultMap使用、MyBatis常用注解方式、MyBatis动态SQL

#{}和${}区别&#xff1a; #{}&#xff1a;是占位符&#xff0c;采用预编译的方式sql中传值&#xff0c;防止sql注入&#xff0c;如果我们往sql中列值传递一般使用 #{}。 ${}&#xff1a;采用字符串拼接的方式直接拼接到sql语句中&#xff0c;一般不用于sql列值传递&#xf…

量化投资策略与技术学习PART1.1:量化选股之再谈多因子模型(二)

在上一个多因子模型中&#xff0c;我手动对各个因子进行了回测&#xff0c;但是数据结果并不是十分理想&#xff0c;难道基本面指标真的和股票走势关系不大么&#xff1f; 这里我还是准备再测试一下&#xff0c;策略如下&#xff1a; &#xff08;1&#xff09;首先我获取了一下…

计算机学习

不要只盯着计算机语言学习&#xff0c;你现在已经学习了C语言和Java&#xff0c;暑假又规划学习Python&#xff0c;最后你掌握的就是计算机语言包而已。 2. 建议你找一门想要深挖的语言&#xff0c;沿着这个方向继续往后学习知识就行。计算机语言是学不完的&#xff0c;而未来就…

【C++20】携程库基础知识

文章目录 参考 参考 协程革命

如何识别视频里的声音转化为文字?视频转文字方法

如何识别视频里的声音转化为文字&#xff1f;识别视频声音转文字技术&#xff0c;不仅极大地提升了信息处理的效率&#xff0c;还促进了跨语言沟通和文化交流。在全球化背景下&#xff0c;它成为了连接不同语言群体的桥梁。此外&#xff0c;随着人工智能技术的不断进步&#xf…

【Python】标准库的使用

Python 通过模块来体现“库” 降低了程序猿的学习成本提高了程序的开发效率 库 就是是别人已经写好了的代码&#xff0c;可以让我们直接拿来用 荀子曰: “君子性非异也&#xff0c;善假于物也” 一个编程语言能不能流行起来&#xff0c;一方面取决于语法是否简单方便容易学习…