首页 > 其他分享 >「学习笔记」并查集

「学习笔记」并查集

时间:2023-08-10 21:57:07浏览次数:33  
标签:set int 查集 笔记 学习 fa operator

真的有必要说吗?

直接上封装好的模板吧,包含路径压缩和按秩合并。

struct union_find_set {
    int fa[N], siz[N];

    int &operator [] (const int& x) {
        return fa[x];
    }

    void reset() {
        for (int i = 1; i <= n; ++ i) {
            fa[i] = i;
            siz[i] = 1;
        }
    }

    int find(int x) {
        return fa[x] == x ? fa[x] : fa[x] = find(fa[x]);
    }

    void Union(int x, int y) {
        int fx = find(x), fy = find(y);
        if (siz[fx] <= siz[fy]) {
            swap(fx, fy);
        }
        fa[fy] = fx;
        siz[fx] += siz[fy];
    }
} ufs;

标签:set,int,查集,笔记,学习,fa,operator
From: https://www.cnblogs.com/yifan0305/p/17525197.html

相关文章

  • 「学习笔记」随机数据
    前置知识——随机函数我们日常用的随机函数为rand(),虽然比较慢,但已经足够用了,它会随机生成一个范围在\([0,2^{31}-1]\)中的一个数。使用时要用随机种子seed,可以使用srand(seed)来设置、更改随机种子,当然,不初始化也是可以的,只是同一个程序用相同的seed、相同的机器、相......
  • 七月学习之Iptables场景示例
    10、Iptables场景示例10.1、iptables场景一场景描述1、对所有的地址开放本机的tcp(80、22、8080-9090)端口的访问2、允许对所有的地址开放本机的基于ICMP协议的数据包访问3、其他未被允许的端口禁止访问实现思路1、先允许端口、协议2、配置拒绝规则#INPUTiptables-Fiptab......
  • 日语学习资料汇总(可下载)
    妞妞----《大家的日语》(侧重考级)天易外语----旧版《标准日本语》娜娜----日语讲堂津波老师----新版标准日本语爱知----实用日语口语……在直播课程有预告http://www.fairage.com/total.jsp?type=153学习资料下载:日语学习视频(超系统学习共36学时)日语发音flash《常用日语100句》......
  • 7999: 路径图 并查集
    描述 给定一个n个顶点(1~n编号),m条边的简单无向图,判断是否是一个路径图。路径图要求:必须存在一个顶点序列v1,v2,...,vn,它是1~n的一个排列,且对于任何1<=i<=n-1,vi和vi+1之间有边相连,而对于任何1<=i,j<=n(其中|i-j|>=2),vi和vj之间没有边相连。 输入 第一行为两个正......
  • Atcoder杂题笔记
    大概会把博客当草稿纸用(当然写出正解还是会把正解贴出来。[ARC080E]YoungMaids(待补代码)给定正偶数\(N\)。给定\(N\)元排列\(p=(p_1,p_2,...,p_N)\).Snuke打算根据下述步骤构造一个\(N\)元排列\(q\)。首先,令\(q\)为空。接下来,执行下述操作直到\(p\)为空......
  • 【我和openGauss的故事】openGauss 主备架构及同步复制模式理论学习与验证测试
    【我和openGauss的故事】openGauss主备架构及同步复制模式理论学习与验证测试尚雷[openGauss](javascript:void(0);)2023-08-0818:00发表于四川收录于合集#第六届openGauss技术文章征集初审合格文章62个备注:非常感谢在这研究本文相关内容中openGauss数据库官网行尘(张旭博)......
  • C++/嵌入式八股学习-day3
    目录C++/嵌入式八股学习-day3C/C++使用指针传递大容量参数如何禁止程序自动生成拷贝构造函数?final和override关键字C++类内可以定义引用数据成员吗?auto关键字成员函数里memset(this,0,sizeof(*this))会发生什么ARMSPIz总线的工作频率ARM内部传输数据的总线有哪些?IIC时钟拉伸应用编......
  • openGauss学习笔记-36 openGauss 高级数据管理-TRUNCATE TABLE语句
    openGauss学习笔记-36openGauss高级数据管理-TRUNCATETABLE语句清理表数据,TRUNCATETABLE用于删除表的数据,但不删除表结构。也可以用DROPTABLE删除表,但是这个命令会连表的结构一起删除,如果想插入数据,需要重新建立这张表。它和在目标表上进行无条件的DELETE有同样的效果,但由于......
  • HTMLParser(一个比较流行的html代码解析、处理开源项目)学习,总结
    主页:http://htmlparser.sourceforge.net/ HtmlParser初步研究bylostfire这两天准备做一些网站编程的工作,于是对HtmlParse小研究了一下,目的是快速入手,而不是深入研究,做了一下整理,和大家共同讨论一下。一,数据组织分析:HtmlParser主要靠Node、AbstractNode和Tag来表达Html,因为Remar......
  • javascript学习二
     文献1ECMAScript基础2对象基础javascript到底是基于对象还是面向对象?使用预定义的对象:创建新对象:继承机制3浏览器中的javascript3.1用<script></script>标签,将javascript引入html3.2Svg3.3BOMBrowserObejctModel4DOM基础关于sax和dom的区别:DOM的常识CoreDOM:HTMLDOMDOM一......