并查集的应用

 

目录

1.并查集的代码 

2.union操作

3.find操作

4.图


写代码:定义一个并查集(用长度为n的数组实现) 
基于上述定义,实现并查集的基本操作—— 并 Union 
基于上述定义,实现并查集的基本操作—— 查 Find 
自己设计一个例子,并查集初始有10个元素,进行若干次Union操作,画出每一次Union后的样子 
自己设计一个例子,基于上一步得到的并查集,进行若干次find操作(每次find会进行“路径压缩”)。画出每次 find (路径压缩)后的样子 

1.并查集的代码 

2.union操作

3.find操作

#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
int UFSets[SIZE];//集合元素数组(双亲指针数组) //初始化操作
void initial(int s[])//s即为并查集 
{for(int i=0;i<SIZE;i++){//每个自成单元素集合 //TODOs[i]=-1;}
} //find操作
int find(int s[],int x) 
{while(s[x]>=0){//循环寻找x的根 //TODOx=s[x];}return x;//根的s[]小于0 
} //union操作
void union(int s[],int root1,int root2)
{if(root1==root2){//TODOreturn;//要求root1和root2是不同的集合 }s[root2]=root1;//将根root2连接到另一根root1下面 
} 
//优化后的union操作
void Union(int S[] ,int Root1,int Root2)
{if(Root1==Root2){//TODOreturn;}if(S[Root2]>S[Root1]){//Root2的结点数更少 //TODOS[Root1]+=S[Root2];//累加集合树的结点总数 S[Root2]=Root1;//小树合并到大树 } else{               //Root1结点数更少 S[Root2]+=S[Root1];//累加到结点总数 S[Root1]=Root2;//小数合并到大树 }
} 
//优化后的find操作
int Find(int S[],int x)
{int root=x;while(S[root]>=0){//循坏找到根 //TODOroot=S[root];}while(x!=root){//压缩路径 //TODOint t=S[x];//t指向x的父结点 S[x]=root;//x直接挂到根结点下面 x=t;}return root; //返回根结点的编号 
} 

4.图

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

欧美游戏市场的差异

欧洲和美国的游戏市场虽然高度发达且利润丰厚&#xff0c;但表现出由文化偏好、消费者行为、监管环境和平台受欢迎程度塑造的独特特征。这些差异对于寻求为每个地区量身定制策略的游戏开发商和发行商来说非常重要。 文化偏好和游戏类型 美国&#xff1a;美国游戏市场倾向于青…

Java基础尚硅谷84-面向对象-package与import关键字的使用

曾国藩说&#xff0c;基础不牢&#xff0c;很难走得远。 所以时时回顾一下Java基础&#xff0c;打好地基&#xff0c;让自己走得更稳&#xff0c;更远。 今天这节课&#xff0c;学到对自己有点价值的东西是&#xff1a; 1 import 导入A包.*&#xff0c;可以使用A包下&#xff…

操作系统、数据库

操作系统 管道&#xff1a;读写先进先出&#xff0c;不能想读哪里就读哪里&#xff0c;想写哪里就哪里 内存 块表的理论支撑&#xff1a;局部性原理&#xff1a;1.时间局部性和空间局部性原理。 内存映射&#xff1a;

目标检测——flask后端YOLOv8检测视频,前端实时显示检测结果

前端代码&#xff1a; index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>YOLOv8 Video S…

网络安全笔试练习题,据说10分钟内答对的都是高手!

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…

CSP-J/S赛前知识点大全2:初赛纯靠记忆的知识点

-NOI的中文意思是&#xff08;全国青少年信息学奥林匹克竞赛&#xff09;。 -NOIP从&#xff08;2022&#xff09;年开始不支持Pascal语言。 -中国计算机学会&#xff08;CCF&#xff09;于&#xff08;1962&#xff09;年成立&#xff0c;于(1984)年创办全国青少年计算机程序设…

惬意享受阅读,优雅的微信公众号订阅方式,极空间部署『WeWe RSS』

惬意享受阅读&#xff0c;优雅的微信公众号订阅方式&#xff0c;极空间部署『WeWe RSS』 哈喽小伙伴们好&#xff0c;我是Stark-C~ 不知道大家平时是怎么阅读自己关注的公众号文章的&#xff0c;是不是基本就靠微信平自动提醒更新呢&#xff1f;如果是这样&#xff0c;那么我…

dubbo二

dubbo dubbo扩展加载流程 服务调用过程 线程派发模型 多版本控制 集群容错 策略对比 负载均衡及其实现

ICM20948 DMP代码详解(25)

接前一篇文章&#xff1a;ICM20948 DMP代码详解&#xff08;24&#xff09; 上一回讲到了inv_icm20948_load_firmware函数&#xff0c;对于大体功能进行了介绍&#xff0c;本回深入其具体实现代码细节。为了便于理解和回顾&#xff0c;再次贴出相关代码&#xff1a; //Setup Iv…

甲骨文创始人埃里森:人工智能终有一天会追踪你的一举一动

9月17日消息&#xff0c;据外电报道&#xff0c;甲骨文创始人拉里埃里森在甲骨文财务分析师会议上表示&#xff0c;他预计人工智能有一天将为大规模执法监控网络提供动力。“我们将进行监督。”他说。“每一位警察都将随时受到监督&#xff0c;如果有问题&#xff0c;人工智能会…

从0到一个漏洞几千块,走了这么久,走了这么远,当然还要继续走下去。

从0到一个漏洞几千块&#xff0c;走了这么久&#xff0c;走了这么远&#xff0c;当然还要继续走下去。

odb使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、创建学生类和班级类1.学生类2.班级类3.生成数据库支持代码 二、创建数据库对象&#xff0c;对数据库进行操作1.构建连接池工厂配置对象2.构造数据库操作对象…

概率分布深度解析:PMF、PDF和CDF的技术指南

本文将深入探讨概率分布&#xff0c;详细阐述概率质量函数&#xff08;PMF&#xff09;、概率密度函数&#xff08;PDF&#xff09;和累积分布函数&#xff08;CDF&#xff09;这些核心概念&#xff0c;并通过实际示例进行说明。 在深入探讨PMF、PDF和CDF之前&#xff0c;有必…

JavaSE - 面向对象编程03

01 多态 01_01 认识多态 01_02 多态的好处和缺点 【1】好处&#xff1a;① 可以解耦合&#xff0c;扩展性更强&#xff0c;父类引用指向的子类对象可以随时切换&#xff0c;而后面的逻辑 代码并不需要更改。 ② 使用父类引用可以作为方法的形参或返…

java138-异常处理_java 138错误

//异常 public class test79 { //定义方法声明定义异常&#xff0c;在满足条件时抛出异常对象&#xff0c;程序转向异常处理 public double count(double n,double m)throws Exception { if (m 0) {//如果除数等于0.则抛出异常实例 throw new Ex…

C/C++:优选算法(持续更新~~)

一、双指针 1.1移动零 链接&#xff1a;283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操…

近期值得关注的扩散模型Diffusion与时间序列结合的文章

扩散模型 扩散模型&#xff08;diffusion model&#xff09;是一类生成模型&#xff0c;运用了物理热力学扩散思想&#xff0c;主要用于对复杂数据分布进行建模和采样。以图片生成举例简要介绍下扩散模型运作方法。给定目标分布q(x)中的一些观测数据x&#xff0c;生成模型的目…

常见算法——自相关的含义及Python、C实现

常见算法——自相关的含义及C实现 一、概念1. 自相关概念2. 滞后期示例说明&#xff1a; 二、自相关的计算步骤&#xff1a;1. 确定滞后期 (Lag)&#xff1a;2. 计算平均值&#xff1a;3. 计算自相关&#xff1a; 三、示例 Python自相关计算1. 代码2. 运行结果 四、C语言实现自…

剖解杨辉三角

杨辉三角 思路&#xff1a; 我们将上述转换为一个二维数组&#xff0c;即可实现效果 另外在实现代码之前我们要了解Java中是如何实现二维数组的&#xff1a; 实现代码如下&#xff1a; public List<List<Integer>> generate(int numRows){List<List<Integ…

【linux-Day3】linux的基本指令<中>

【linux-Day3】linux的基本指令<中> linux下的基本指令&#x1f4e2;man&#xff1a;访问linux手册页&#x1f4e2;echo&#xff1a;把字符串写入指定文件中&#x1f4e2;cat&#xff1a;查看目标文件的内容&#x1f4e2;cp&#xff1a;复制文件或目录&#x1f4e2;mv&am…