山东省城乡与住房建设厅网站首页珠宝网络营销方式

张小明 2026/3/2 21:27:42
山东省城乡与住房建设厅网站首页,珠宝网络营销方式,载带 东莞网站建设,网域高科学校网站管理系统并查集理论基础 一、核心思想 高效处理动态连通性问题。 并查集用于判断两个元素是否在同一个集合中。它将每个集合看作一棵树#xff0c;集合的“代表”就是这棵树的根节点。如果两个元素的根节点相同#xff0c;它们就在同一个集合。 二、三大核心操作 初始化 功能集合的“代表”就是这棵树的根节点。如果两个元素的根节点相同它们就在同一个集合。二、三大核心操作初始化功能开始时每个元素都是一个独立的集合其根节点是自己。代码void init(int n) { for (int i 0; i n; i) { father[i] i; // 每个节点的父节点都是自己 } }寻根功能找到指定元素所在集合的根节点。这是并查集的灵魂。优化路径压缩在寻找根的过程中将路径上的所有节点直接指向根节点极大提升后续查询效率。代码int find(int u) { // 如果u的父节点不是自己就递归寻找并把u的父节点直接设置为根 return u father[u] ? u : father[u] find(father[u]); }合并功能将两个元素所在的集合合并成一个。核心原则必须先找到两个元素的根节点再将其中一个根节点连接到另一个上。代码void join(int u, int v) { u find(u); // 找到u的根 v find(v); // 找到v的根 if (u v) return; // 如果根相同说明已在同一集合无需操作 father[v] u; // 将v的根连接到u的根上 }判断功能判断两个元素是否在同一个集合。代码bool isSame(int u, int v) { return find(u) find(v); }三、常见误区join函数的正确写法错误写法void join(int u, int v) { if (isSame(u, v)) return; // 虽然判断对了但... father[v] u; // ...这里连接的是原始节点u和v而不是它们的根 }问题这样会破坏树的结构导致后续find操作出错。例如join(1, 2); join(3, 2);后isSame(1, 3)会返回false不符合预期。正确写法void join(int u, int v) { u find(u); // 必须先找根 v find(v); // 必须先找根 if (u v) return; father[v] u; // 连接的是根节点 }原因保证了总是将两个集合的根进行连接维护了数据结构的正确性。四、另一个优化按秩合并思想在合并时总是将“秩”可以理解为树的高度或大小较小的树挂载到较大的树上避免树的高度过快增长。虽然理论上很好但路径压缩的优化效果已经非常出色且代码更简洁。在实际应用和面试中通常只使用路径压缩就足够了。五、完整代码模板int n 1005; // n根据题目中节点数量而定一般比节点数量大一点就好 vectorint father vectorint (n, 0); // 并查集初始化 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]); // 路径压缩 } // 判断 u 和 v是否找到同一个根 bool isSame(int u, int v) { u find(u); v find(v); return u v; } // 将v-u 这条边加入并查集 void join(int u, int v) { u find(u); // 寻找u的根 v find(v); // 寻找v的根 if (u v) return ; // 如果发现根相同则说明在一个集合不用两个节点相连直接返回 father[v] u; }六、复杂度分析空间复杂度O(n)需要一个father数组。时间复杂度接近 O(1)。路径压缩后的并查集时间复杂度在O(logn)与O(1)之间且随着查询或者合并操作的增加时间复杂度会越来越趋于O(1)。路径压缩保证了每次操作后树的结构都趋向于扁平化使得后续的查询和合并操作非常快。KamaCoder107.寻找存在的路线107. 寻找存在的路线1.思路本题是并查集的模板题掌握基础模板就能直接拿下。#include iostream #include vector using namespace std; int n,m; vectorintfather(105,1); void init(){ for(int i1;in;i){ father[i]i; } } int find(int u){ if(ufather[u]) return u; return father[u]find(father[u]); } bool issame(int u,int v){ ufind(u); vfind(v); return uv; } void join(int u,int v){ ufind(u); vfind(v); if(uv) return; father[u]v; } int main(){ cinnm; init(); for(int i0;im;i){ int s,t;cinst; join(s,t); } int source,destination; cinsourcedestination; coutissame(source,destination); return 0; }2.Reference107. 寻找存在的路径 | 代码随想录
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

个人网站搭建详细步骤鼓楼公司网站建设费用

Go语言图数据库实战:Neo4j深度集成指南 【免费下载链接】go The Go programming language 项目地址: https://gitcode.com/GitHub_Trending/go/go 开篇:为什么图数据库是你的新宠? 还在为复杂的关系数据头疼吗?关系型数据…

张小明 2026/1/11 5:21:36 网站建设

网站升级中门户网站平台建设方案

在 SAP 中,公司 C0916 和公司码 0916、0918、0919 的关联设置,契合 “1 个公司对应多个公司码” 的经典架构。下面结合业务含义和系统实现两方面,搭配实际例子详细分析二者的区别与关联:业务含义代码类型具体含义针对题干中代码的…

张小明 2026/1/11 5:19:34 网站建设

商城网站开发需要哪些人员苏州公司网站建设公司

3分钟掌握B站4K视频下载:从配置到批量处理全攻略 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 想要永久收藏B站上的精彩…

张小明 2026/1/11 5:17:33 网站建设

自己做网站投放广告如何做一个企业的网站

DeepSeek-R1大模型深度解析:突破128K上下文壁垒的技术架构创新 【免费下载链接】DeepSeek-R1 探索新一代推理模型,DeepSeek-R1系列以大规模强化学习为基础,实现自主推理,表现卓越,推理行为强大且独特。开源共享&#x…

张小明 2026/1/11 5:15:29 网站建设

南宁希噢网站开发工作室网站建设方案前言

僵尸网络的功能与危害解析 1. 僵尸网络命令示例 僵尸网络有一系列特定的命令,以下是一些常见的命令示例: | 功能 | 命令代码 | | — | — | | 查找文件停止 | findfilestopp | | DDoS - SYN 攻击 | syn [ip] [port] [seconds|amount] [sip] [sport] [rand] | | DDoS -…

张小明 2026/1/11 5:11:24 网站建设

wap手机网站开发asp经验网站建设方案书的内容

简介 本文以淘宝闪购系统为例,展示如何利用AI技术辅助DDD落地解决单体架构问题。通过AI分析代码结构、识别领域边界、生成领域模型和代码骨架,结合人工修正,实现了架构解耦和重复代码消除。实践证明,AI辅助架构设计可显著提升开发…

张小明 2026/1/11 5:09:18 网站建设