算法学习 之 并查集

news2024/10/7 2:26:21

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
leecode 中这题就需要并查集
代码如下


typedef struct{
    int * parents;
    int * sizes;
} UnionFind;
// 下面建立一个初始化
UnionFind * NewUnionFind(int n){
    UnionFind * uf = (UnionFind *) malloc(sizeof(UnionFind));
    uf->parents = (int *) malloc (sizeof(int)*n);
    uf->sizes = (int *) malloc (sizeof(int)*n);
    // 初始化
    for(int i = 0; i < n ;i++){
        uf->parents[i] = i;
        uf->sizes[i] = 1;
    }
    return uf;
}
// 清空
void FreeUnionFind(UnionFind * uf){
    free(uf->parents);
    free(uf->sizes);
    free(uf);
    
}
int Find(UnionFind * uf,int x){
    if(uf->parents[x] == x){
        return x;
    }
    return uf->parents[x] = Find(uf , uf->parents[x]);
}
// 合并
void Union(UnionFind * uf , int x , int y){
    int rx = Find(uf,x) , ry = Find(uf,y);
    if(rx != ry){
        if(uf->sizes[rx] > uf->sizes[ry]){
            uf->parents[ry] = rx;
            uf->sizes[rx] += uf->sizes[ry];
        }else{
            uf->parents[rx] = ry;
            uf->sizes[ry] += uf->sizes[rx];
        }
    }
}
int getSize(UnionFind * uf,int x){
    return uf->sizes[x];
}
long long countPairs(int n, int** edges, int edgesSize, int* edgesColSize){
    UnionFind * uf = NewUnionFind(n);
    for(int i = 0 ; i< edgesSize ;i ++){
        Union(uf,edges[i][0],edges[i][1]);
    }
    long long res = 0;
    for(int i = 0 ; i < n ; i++){
        res += n - getSize(uf , Find(uf,i));
    }
    FreeUnionFind(uf);
    return res/2;
}

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

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

相关文章

UGNX二次开发 实时查看 NX 日志文件

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 感谢粉丝订阅 感谢 a18037198459 订阅本专栏,非常感谢。 简介 实时查看 NX 日志文件,有助于分析保存时间等。打开WindowsPowerShell并实时获取日志文件内容的小功能。 效果 代…

使用CMS后台资源,如何在小程序上不开调试模式能正常呈现出内容

配置合法域名 如何配置合法域名&#xff1a; 1.找到自己的合法域名&#xff1a;在微信开发者工具中“不勾选"不校验合法域名&#xff0c;就会看到报错说你的某个链接不是合法域名&#xff0c;那不就说明我们需要将这个链接设置为合法域名嘛。这就找到了我们的需要设置的…

二叉树;二叉树的前序、中序、后序遍历及查找;顺序存储二叉树;线索化二叉树

数组、链表和树存储方式分析 对于树结构&#xff0c;不论是查找修改还是增加删除&#xff0c;效率都比较高&#xff0c;结合了链表和数组的优点&#xff0c;如以下的二叉树&#xff1a; 1、数组的第一个元素作为第一个节点 2、数组的第二个元素3比7小&#xff0c;放在7的左边…

Win10系统2023年10月更新补丁(KB5031356)后 IE11无法打开使用解决办法

原因: 官方更新的最新系统补丁已经永久禁用IE11了 以下是官方说明: 最好的办法是: (已验证可行~) 1, 禁用系统自动更新 (注册表 或者 设置->更新->高级选项 等等 自行禁用掉系统自动更新即可) 2, 卸载禁用IE的更新补丁KB5031356 控制面板>程序>程序和功能>…

深入理解main函数

深入理解main函数 第三个参数指向环境变量

基于人工兔优化的BP神经网络(分类应用) - 附代码

基于人工兔优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于人工兔优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.人工兔优化BP神经网络3.1 BP神经网络参数设置3.2 人工兔算法应用 4.测试结果&#x…

Qt第六十六章:展示数据的标签

目录 一、效果图 二、qtDesigner ①拖出一个frame作为组容器并贴上背景样式 ②拖出主要的三个控件&#xff1a;frame、line、frame、label*2 ③固定大小并设置字体、布局一下 ④拷贝三份并水平布局一下 ⑤设置样式 ⑥调整布局 三、ui文件 四、代码 一、效果图 二、qtD…

java蓝桥杯前10题总结

文章目录 1.单词分析1.代码2.知识点 2.成绩统计1.代码2.知识点1.如何四舍五入&#xff1f;2.如何保留小数点后几位小数呢&#xff1f; 3.最短路4.回文日期1.代码2.知识点1.日期类2.字符串细节3.连等的细节 5.门牌制作1.代码 6.卡片1.代码2.细节 7.数字三角形1.代码2.细节 8.成绩…

《向量数据库》——向量数据库MIlvus Cloud携手发起 AGI 黑客松,解锁行业更多可能

携手发起 AGI 黑客松,解锁行业更多可能 不止如此,双方在深度合作的基础上,还联合极客公园 Founder Park、智谱 AI 等,共同发起 AGI Playground Hackathon,旨在重新思考 AI Native 时代下的应用和服务,解决共同的行业发展问题。届时,Dify 将为参赛者提供接入了智谱 AI 模…

Domino中的源代码管理工具

大家好&#xff0c;才是真的好。 上次Notes/Domino 14 Drop2发布的时候&#xff0c;我们就提到&#xff0c;HCL一起发布了一款源代码管理工具。 这里还是简单科普一下&#xff0c;源代码管理工具&#xff0c;可以实现代码版本控制、备份&#xff0c;还有多个程序员之间的协作…

【ROOTFS】1-构建rootfs与nfs调试

简介 rootfs这一块比较简单&#xff0c;别怕&#xff0c;基本就是拿一个busybox过来&#xff0c;然后编译一下&#xff0c;就可以在指定的目录下生成一堆文件夹和文件&#xff0c;你可以把这个当成rootfs了&#xff1b; busybox: https://busybox.net/ 教程文档 【链接】 b…

绿盾控制台如何给未授权终端分配相应权限

环境&#xff1a; 绿盾控制台7.0 问题描述&#xff1a; 绿盾控制台如何给未授权终端分配相应权限 解决方案&#xff1a; 1.进入桌面管理系统 2.通过终端号&#xff0c;找到未授权终端下面&#xff0c;选择相应的未授权终端 3.点击鼠标右键&#xff0c;选择分配授权模块 4.下…

进阶课2——语音分类

语音分类主要是对语音从不同的维度进行识别和分类&#xff0c;这些维度可以包括语种、性别、年龄段、情绪、说话人身份等&#xff0c;具体如下&#xff1a; 语种分类&#xff1a;根据发音人的母语或者惯用语言&#xff0c;将语音分为不同的语种&#xff0c;例如中文、英文、法…

【UnityUGUI】UGUI六大组件和三大基本控件详解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;UI_…

用ChatGPT编写Excel函数公式进行表格数据处理分析,so easy!

在用Excel进行数据处理分析时&#xff0c;经常需要编写不同的公式&#xff0c;需要了解大量的函数。有了ChatGPT&#xff0c;就很简单了&#xff0c;直接用自然语言描述自己的需求&#xff0c;然后让ChatGPT写出公式就好了。 例子1&#xff1a; Excel某个单元格的内容是&#…

【鸿蒙软件开发】ArkTS常见组件之单选框Radio和切换按钮Toggle

文章目录 前言一、Radio单选框1.1 创建单选框1.2 添加Radio事件1.3 场景示例二、切换按钮Toggle2.1 创建切换按钮2.2 创建有子组件的Toggle2.3 自定义样式selectedColor属性switchPointColor属性 2.4 添加事件2.5 示例代码 总结 前言 Radio是单选框组件&#xff0c;通常用于提…

【深入探究Java集合框架】从List到Map的完整指南

文章目录 &#x1f31f; Java集合框架&#x1f34a; Collection&#x1f389; List&#x1f389; Set&#x1f389; Map &#x1f34a; 集合的选择&#x1f389; 1. 有序并允许重复元素的集合 List&#x1f389; 2. 无序并且不允许重复元素的集合 Set&#x1f389; 3. 维护映射…

大语言模型(LLM)综述(一):大语言模型介绍

A Survey of Large Language Models 前言1. INTRODUCTION2. OVERVIEW2.1 大语言模型的背景2.2 GPT系列模型的技术演变 前言 随着人工智能和机器学习领域的迅速发展&#xff0c;语言模型已经从简单的词袋模型&#xff08;Bag-of-Words&#xff09;和N-gram模型演变为更为复杂和…

DVWA(一)

环境搭建 搭建DVWA Web渗透测试靶场_dvwa 白屏-CSDN博客 Brute Force&#xff08;暴力破解&#xff09; LOW 输入账号密码 burp suite拦截请求 请求发送至intruder attack type:选择cluster bomb,将用户名和密码Add添加 payload 1 添加用户名字典&#xff0c;payload 2 添…

网工实验手册:RSTP如何配置?

1. 实验目的 熟悉RSTP的应用场景掌握RSTP的配置方法 想要华为数通配套实验拓扑和配置笔记的朋友们点赞关注&#xff0c;评论区留下邮箱发给你! 2. 实验拓扑 实验拓扑如图所示&#xff1a; 图&#xff1a;RSTP的配置 3. 实验步骤 &#xff08;1&#xff09; …