首页 > 其他分享 >并查集模板

并查集模板

时间:2022-08-20 17:14:39浏览次数:70  
标签:parent self 查集 leader def find 模板 size

Python版本
class UF:
    parent = {}
    size = {}
    cnt = 0
    def __init__(self, M):
        # 初始化 parent,size 和 cnt
        # self.parent = {i for i in range(n)}

    def find(self, x):
        while x != self.parent[x]:
            x = self.parent[x]
            self.parent[x] = self.parent[self.parent[x]]  # 路径压缩:隔代压缩(基于循环)
        return x
        
    # def find(self, x):
    #     if x != self.parent[x]:
    #         self.parent[x] = self.find(self.parent[x])  # 路径压缩:完全压缩(基于递归)
    #     return self.parent[x]
    
    def union(self, p, q):
        if self.connected(p, q): return
        leader_p = self.find(p)  # 小的树挂到大的树上,使树尽量平衡,即按秩合并,基于size的优化方法
        leader_q = self.find(q)
        if self.size[leader_p] < self.size[leader_q]:
            self.parent[leader_p] = leader_q
        else:
            self.parent[leader_q] = leader_p
        self.cnt -= 1
    def connected(self, p, q):
        return self.find(p) == self.find(q)

标签:parent,self,查集,leader,def,find,模板,size
From: https://www.cnblogs.com/notomatoes/p/16608158.html

相关文章

  • Intellij IDEA 快速生成注释模板教程
    生成类注释File–>settings–>Editor–>FileandCodeTemplates–>Class(1)@BelongsProject:当前项目的名称(2)@BelongsPackage:当前包的名称(3)@Author:作者姓名(可以写死,写成......
  • C++模板(函数模板 & 类模板)
    模板编程可称范型编程,是一种忽视数据类型的编程方式,这样的好处是什么?且看下面一个例子:简单使用求解最值问题,返回两个值中的较大值:intMax(inta,intb){ returna>......
  • 【模板】杜教筛
    #include<stdio.h>#include<math.h>#include<map>#defineullunsignedlonglong#definelltlonglongint#defineuitunsignedintconstintN=5e6+10;int......
  • 跳表模板
    跳表是一种单链表的改进,在刷力扣时看到的,有篇博客写的不错,分析了跳表的复杂度和基本原理。链接搬在这里:CSND参考博客关于数据结构的定义、查询、添加和删除的操作,力扣12......
  • 10 继承模板 & inclution_tag & 文章的详情页设计 & 文章点赞 & 文章的评论
    模板继承即渲染:文章点赞或反对:跟评论和子评论:settings.pysettings.pyUSE_TZ=False#转时区改为False编写url:urls.pyfromdjango.urlsimportre_pat......
  • 界面控件DevExpress WinForm v22.2——即将拥有新的HTML & CSS模板
    HTML&CSS模板正在迅速成为DevExpressWinForm产品线的又一支柱,这一独特的功能将UI定制提升到了一个全新的水平。在这篇文章中,我将向您简要介绍官方技术团队即将发布的计......
  • 二分查找的模板
    二分查找的难度不低:从定义上来看:为什么需要二分查找大神总结:[]:https://leetcode.cn/circle/article/xYBtLt/#迭代版模板......
  • 模板集合
    建议用标题旁边打开的目录,更清晰明了!其他读入、输出优化(必加!!!)快读模板inlineintread(){ intsum=0,f=1;chara=getchar(); while(a<'0'||a>'9'){if(a=='-') f=......
  • 洛谷P4726 【模板】多项式指数函数(多项式 exp)
    题目https://www.luogu.com.cn/problem/P4726思路(略)是个板题,但是包含了很多多项式的基础板子,适合用来练手。据说递归版的好写(好抄),但是我猜测和fft类似,迭代版的应该常......
  • html常用模板-附带样式
    <!DOCTYPEhtml><htmllang="zh-Hans-CN"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge,chrome=1"><metaname="rende......