kruakal算法(P3603,3366)

[图论与代数结构 301] 最短树问题_1 - 洛谷

分三步,输入,排序,并查集连接n次

using ll = long long;
constexpr int N = 2e5 + 5;
constexpr int M = 5e5 + 5;
ll ans, sum, n, m;struct DSU {std::vector<int> f, siz;DSU() {}DSU(int n) {init(n);}void init(int n) {f.resize(n);std::iota(f.begin(), f.end(), 0);siz.assign(n, 1);}int find(int x) {while (x != f[x]) {x = f[x] = f[f[x]];}return x;}bool merge(int x, int y) {x = find(x);y = find(y);if (x == y) return false;siz[x] += siz[y];f[y] = x;return true;}int size(int x) {return siz[find(x)];}
};DSU dsu(N);struct edge {ll from, to, value;
};std::vector<edge> e(M*2);void Kruskal() {ll tot = 0;//按值的大小排序std::sort(e.begin() + 1, e.begin() + 1 + m, [&](const edge& x, const edge& y) {return x.value < y.value;});//枚举边值for (int i = 1; i <= m; i++) {//连接n次if (dsu.merge(e[i].to, e[i].from)) {tot++;ans += e[i].value;}if (tot == n) break;}
}int main() {//输入std::cin >> n >> m;for (int i = 1; i <= m; i++) {std::cin >> e[i].from >> e[i].to >> e[i].value;}Kruskal();//打印答案std::cout << ans << '\n';return 0;
}

【模板】最小生成树 - 洛谷

这道题增加了一个连通性的判断

//改一下数据,增加一个判断连通性
constexpr int N = 5000 + 5;
constexpr int M = 2e5 + 5;
int main() {std::cin >> n >> m;for (int i = 1; i <= m; i++) {std::cin >> e[i].from >> e[i].to >> e[i].value;}Kruskal();//连接完for (int i = 1; i <= m; i++) {dsu.merge(e[i].to, e[i].from);}//枚举节点看父节点是否相同bool connected = true;for (int i = 1; i <= n; ++i) {if (dsu.find(i) != dsu.find(1)) {connected = false;break;}}if (connected) {std::cout << ans << '\n';}else {std::cout << "orz" << '\n';}return 0;
}

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

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

相关文章

ArrayList 是线程安全的么?

1、典型回答 ArrayList 是非线程安全的数据结构 多线程环境下&#xff0c;如果多个线程同时对同一个 ArrayList 进行添加、删除或修改操作&#xff0c;可能会导致数据不一致或发生异常。这是因为&#xff0c;ArrayList 在内部实现时&#xff0c;并没有添加任何线程同步的机制…

服务器做raid几好

服务器应该做RAID几?RAID是一种将多块独立的硬盘存储数据跟其它硬盘进行存储管理的方法。 RAID是一种存储性能、数据安全和校验等技术,可用于提高数据存储的安全性和可靠性。由于去中心化的方式,它可以保证数据 在所有的硬盘中只有一个硬盘,因为存储性能不需要像硬盘那样根据需…

如何在项目中应用“API签名认证”

❤ 作者主页&#xff1a;李奕赫揍小邰的博客 ❀ 个人介绍&#xff1a;大家好&#xff0c;我是李奕赫&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 记得点赞、收藏、评论⭐️⭐️⭐️ &#x1f4e3; 认真学习!!!&#x1f389;&#x1f389; 文章目录 为什么需要AP…

windows脚本启动程序的方式

1. 获取管理员权限并运行程序 powershell -command "Start-Process -Verb RunAs -FilePath xxx.exe -ArgumentList parameters......" 2. 无须管理员权限 powershell -command "Start-Process -FilePath xxx.exe -ArgumentList parameters......"

ORBSLAM3与GPS进行松组合

文章目录 预备知识orbslam3vins-fusion中的GPS融合策略数据准备环境准备更改配置globalOptNode.cpp代码运行融合结果预备知识 orbslam3 ORBSLAM3 是一个最新的视觉SLAM(Simultaneous Localization and Mapping)系统,它建立在成功的 ORBSLAM2 系统的基础上,引入了多种新的…

在SwiftUI中使用Buider模式创建复杂组件

在SwiftUI中使用Buider模式创建复杂组件 我们在前面的博客闲聊SwiftUI中的自定义组件中聊到了如何在SwiftU中创建自定义组件。 在那里&#xff0c;我们创建了一个非常简单的组件RedBox&#xff0c;它将展示内容增加一个红色的边框。 RedBox非常简单&#xff0c;我们用普通的方…

Java面试题总结12MySQL之MVCC和主从复制原理

什么是MVCC 即多版本并发控制&#xff0c;读取数据时通过一种类似快照的方式将数据保存下来&#xff0c;这样读写与写锁就不会 冲突&#xff0c;不同的事务session只会看到自己特定版本的数据&#xff0c;版本链 MVCC只会在READ COMMITTED(已提交读)和REPEATABLE READ(可重复…

腾讯春招后端一面(算法篇)

前言&#xff1a; 哈喽大家好&#xff0c;前段时间在小红书和牛客上发了面试的经验贴&#xff0c;很多同学留言问算法的具体解法&#xff0c;今天就详细写个帖子回复大家。 因为csdn是写的比较详细&#xff0c;所以更新比较慢&#xff0c;大家见谅~~ 就题目而言&#xff0c;…

深度学习_GoogLeNet_4

目标 知道GoogLeNet网络结构的特点能够利用GoogLeNet完成图像分类 一、开发背景 GoogLeNet在2014年由Google团队提出&#xff0c; 斩获当年ImageNet(ILSVRC14)竞赛中Classification Task (分类任务) 第一名&#xff0c;VGG获得了第二名&#xff0c;为了向“LeNet”致敬&#x…

Java应用卡死 生产故障深度分析与排查实战

一、引言 在实际的生产环境中&#xff0c;我们经常会遇到Java应用出现线程阻塞进而导致服务卡死的问题。这种问题不仅影响用户体验&#xff0c;严重时甚至会导致整个系统崩溃。本文将通过一次真实的生产故障案例&#xff0c;详解从发现异常到定位原因的详细步骤&#xff0c;并…

Linux学习之网络

目录 认识协议 网络协议初始 协议分层 OSI七层模型 TCP/IP的四层模型 数据包封装和分用 以太网通信 ip地址与MAC地址 网络编程套接字 端口号&#xff08;port&#xff09; 认识协议 网络字节序 socket接口 网络的产生是计算机历史的必然性&#xff0c;是计算机发展…

SwiftUI组件-DatePicker

SwiftUI组件-DatePicker 本文记录一下SwiftUI组件-DatePicker import SwiftUIstruct DatePickerBootCamp: View {State var selectedDate: Date Date()var dateFormatter: DateFormatter {let formatter DateFormatter()formatter.dateStyle .shortformatter.timeStyle .…

AI-逻辑回归模型

&#x1f606;&#x1f606;&#x1f606;感谢大家的支持~&#x1f606;&#x1f606;&#x1f606; 逻辑回归的应用场景 逻辑回归&#xff08;Logistic Regression&#xff09;是机器学习中的 一种分类模型 &#xff0c;逻辑回归是一种分类算法&#xff0c;虽然名字中带有回…

09-设计模式 企业场景 面试题

目录 1.简单工厂模式 ​编辑 2.工厂方法模式 3.抽象工厂模式 4.策略模式 5.登录案例(工厂模式+策略模式) 6.责任链设计模式 7.单点登录怎么是实现的? 8.权限认证是如何实现的 9.上传数据的安全性你们怎么控制? 10.你负责项目的时候遇到了哪些比较棘手的问题?怎…

《天软行业全景画像》报告第7期

内容概要&#xff1a; 传媒、环保、美容护理行业的拥挤度较高&#xff0c;实际投资交易应注意&#xff1b;煤炭行业动量较强&#xff0c;医药生物、综合、环保行业动量较弱&#xff0c;业绩整体表现较差&#xff1b;食品饮料、公用事业行业景气度较高&#xff0c;财务基本面状况…

MySQL的索引下推

一、什么事索引下推 MySQL的索引下推&#xff08;Index Condition Pushdown, ICP&#xff09;是一种优化查询的方式&#xff0c;它可以改善查询性能&#xff0c;特别是对于包含多个条件的查询。在没有索引下推的情况下&#xff0c;MySQL会先从索引中找到满足某一条件的行的指针…

unity-unity2d tilemap的基本使用笔记0.5.4000

unity2d tilemap的基本使用笔记 tilemap涉及到元素tile资源的处理步骤如何创建palette并使用如何科学让场景的物体都显示palette视图中的edit按钮在tilemap的实际操作技巧(如何实现层叠)如何提高Tilemap Collider 2D的性能如何调整tilemap的颜色如何调整一个tile的颜色关于Co…

【黑马程序员】Python文件、异常、模块、包

文章目录 文件操作文件编码什么是编码为什么要使用编码 文件的读取openmodel常用的三种基础访问模式读操作相关方法 文件的写入注意代码示例 异常定义异常捕获捕获指定异常捕获多个异常捕获所有异常异常else异常finally 异常的传递 python 模块定义模块的导入import模块名from …

Chroma向量数据库报错Delete of nonexisting embedding ID: 123-sql

Vanna使用ChromaDB_VectorStore时&#xff0c;删除训练数据&#xff0c;指定错误的id后&#xff0c;导致的错误Delete of nonexisting embedding ID: 123-sql 使用delete函数后&#xff0c;经常会出现如下错误&#xff0c;暂未修复&#xff0c;但是不妨碍使用&#xff1a; De…

基于Python的pygame库的五子棋游戏

安装pygame pip install pygame五子棋游戏代码 """五子棋之人机对战"""import sys import random import pygame from pygame.locals import * import pygame.gfxdraw from collections import namedtupleChessman namedtuple(Chessman, Name…