简单并查集算法模板

2023-10-31

并查集

简单并查集
基本思想:
采用双亲表示法,顺序存储。
课本做法:
①初始化数组的值为-1
②若是合并就让一个树的根的数组值指向另一个根的下标
③(查根节点)若是查询就一直到数组值小于0的时候终止
时间复杂度为O(n)

优化:查的过程,并且观察到时间复杂度和树的高度有关即:
①小树合并到大树
②判断小树和大树,将数组根节点的值的绝对值作为大小判断。
时间复杂度为O(log2n)

Y总模板做法(未优化):
①全部初始化为自己的下标值
②若是合并也是将一个集合的根节点的数组值指向另一个集合的根节点的下标
③(查根节点)若是查就查他数组中的值是不是自己的下标即可(下标从1开始) 
#include<iostream>
#include<algorithm>

using namespace std;
const int N = 1e5 +10;
int st[N];
int n,m;

int find(int x)
{
    if(st[x]!=x)
    st[x]=find(st[x]);
    else
    return st[x];
}

int main()
{
    cin >> n >> m;
    for(int i=1;i<=n;i++)
        st[i]=i;
        
    while(m--)
    {
        char op;
        cin >> op;
        int a,b;
        cin >> a >> b;
        if(op=='M')
        {   
            //采用的是树的双亲表示法存储的
            //数组中存储的是双亲的下标
            st[find(a)]=find(b);
        }
        else if(op=='Q')
        {
            if(find(a)==find(b))
            cout << "Yes" << endl;
            else
            cout << "No" << endl;
        }
    }
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单并查集算法模板 的相关文章

随机推荐

  • 用matlab实现对图像的面积测量_使用Matlab测量图像目标尺寸

    在传统的数字图像处理当中 边缘检测与形态学为两门非常重要的技术 在笔者的第一篇文章中已经重点介绍了各种边缘检测算子 因此这次笔者将结合一些较为简单的形态学算法 使用Matlab为大家介绍一个很有意思的测量目标尺寸的小项目 效果如下 图1 效
  • Python的GUI程序设计

    一 实验目的 1 熟练掌握Frame窗体的使用 2 熟练掌握基本控件的用法 二 实验内容 1 编写代码实现当改变窗体位置和大小时 除在文本框中显示信息外 还需在状态栏动态变化显示 窗体大小 XXX XXX 窗体位置 XXX XXX 当鼠标在
  • MySQL 数据库基础命令

    MySQL 基础命令 一 了解数据库 1 了解数据库 1 数据 data 描述事物的符号记录 包括图像音频等多种形式 数据的含义也就是数据的语义就是所谓的信息 2 数据库 DataBase 长期储存在计算机内 有组织的 可共享的大量数据的集
  • [测试猿课堂]小白怎么学测试?史上最全《软件测试》学习路线

    熬夜3天 联合3位猿计划教育的总监级授课老师 整理了这份 软件测试小白学习路线 全文接近6000字 请大家耐心看完 对于很多想通过自学转行软件测试的同学 痛点并不是学习动力 而是找不到清晰的学习思路 网络上的各路 大佬 给出的方案五花八门
  • linux查看已安装软件

    rpm qa
  • 格式化输出以及运算符

    1 格式化输出 方法一 此方法相对复杂 格式化字符串 将指定的数据按照指定的格式组合成指定的字符串 注意 nf表示保留小数点后n位 n gt 1 四舍五入 注意 nd 当n大于原数字的长度 则最终显示的结果长度为n 不够的在左边补0 一般用
  • 【计算机基础】在0和1的世界里来来回回

    事物的正反两面被哲学家讨论了几千年 计算机里的0和1也照旧玩出了各种花样 二进制数 VS 十进制数本小节讲二进制写法 以及到十进制的转换方法 如果已熟悉这些内容可以直接跳到下一小节 我们生活在一个十进制的世界中 10个一毛就是一块 10个一
  • python——个税计算器

    目前我国个人所得税计算公式如下 应纳个人所得税税额 工资薪金所得 五险一金 个税免征额 适用税率 速算扣除数 个税免征额为5000元 月 2018年10月1日起调整后 也就是2018年实行的7级超额累进个人所得税税率表如下 全月应纳税所得额
  • SquareLine Studio ecplise仿真环境搭建

    SquareLine Studio 是LVGL官方推荐的一款UI设计工具 可直接转成C源码 但只能演示UI效果 暂不支持在SquareLine Studio中源码仿真 它提供了另一种仿真方式 将源码工程导入到ecplise arduino等
  • html的兼容性注释,ie兼容性解决方案”使用html注释判断ie版本

    QUOTE 这里是正常的html代码 这里XXX是一些特定的东东 在此列表几个出来 详细介绍各自的含义 如果浏览器是IE 如果浏览器是IE 5 的版本 如果浏览器是IE 6 的版本 如果浏览器是IE 7 的版本 上面是几个常用的判断IE浏览
  • mapbox 点、线、面绘制工具添加

  • openwrt pptpd客户端

    步骤 opkg update opkg install ppp mod pptp opkg install luci proto ppp 在OpenWRT安裝PPTP Client端 首先用ssh登陆到路由器 安装pptp软件包opkg u
  • Change IP address_Auto log in to Netgear Router to Crawling an available IP w xpath_REG_SZ_WinError5

    Use urllib to login in to the Netgear router import urllib user admin pwd LlQ54951 host 192 168 1 1 url http host passma
  • Vue项目中移动端适配vw,postcss-px-to-viewport插件使用。

    Vue项目中使用vw实现移动端适配 随着viewport单位越来越受到众多浏览器的支持 下面将简单介绍怎么实现vw的兼容问题 用vw代替rem 纯属个人习惯PC端使用rem 移动端使用vw 1 准备工作 我是用vue cli脚手架搭建vue
  • ESP8266 WIFI模块AT指令汇总

    1 AT RST 功能 重启模块 2 AT CWMODE
  • 一致性Hash(Consistent Hashing)原理剖析及Java实现

    目录 一 一致性Hash Consistent Hashing 原理剖析 二 一致性hash算法的Java实现 一 一致性Hash Consistent Hashing 原理剖析 引入 一致性哈希算法是分布式系统中常用的算法 一致性哈希算法
  • 高并发请求批量提交

    作用 将数据库操作请求 放入队列中 待定时任务执行时 批量执行数据库操作 以减轻数据库压力 package com zy data sync common scheduled import com zy data sync moudles
  • 【Python】经典问题创建一个矩形类,定义方法 属性 初始化

    Hello 大家好 我是乔乔白术 今天还是处理一些我们的习题 定义一个矩形类Rectangle a 定义三个方法 get area 求面积 get per 求周长 show all 输出长 宽 面积 周 长 b 有2个属性 长length
  • linux查看磁盘空间命令

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net zhaohong bo article details 89944350
  • 简单并查集算法模板

    并查集 简单并查集 基本思想 采用双亲表示法 顺序存储 课本做法 初始化数组的值为 1 若是合并就让一个树的根的数组值指向另一个根的下标 查根节点 若是查询就一直到数组值小于0的时候终止 时间复杂度为O n 优化 查的过程 并且观察到时间复