首页 > 其他分享 >基础带权并查集

基础带权并查集

时间:2024-09-22 16:14:15浏览次数:6  
标签:DSU struct int 查集 基础 带权

只能基础查询到根节点的距离

struct DSU{
    int fa[N], siz[N], deep[N];
    void init(){
       for(int i = 1; i <= n; i++){
           fa[i] = i;
           siz[i] = 1;
           deep[i] = 0;
       }
    }
    int find(int x){
        int tmpfa = fa[x];
        if(fa[x] != x){
            fa[x] = find(fa[x]); // 先把当前父亲节点的更新了,再去计算
            deep[x] += deep[tmpfa];
        }
        return fa[x];
    }
    void merge(int x, int y){
        int fx = find(x), fy = find(y);
        if(fx != fy){
            deep[fx] += siz[fy];
            siz[fy] += siz[fx];
            fa[fx] = fy;
        }
    }
    bool same(int x, int y){
        return find(x) == find(y);
    }
    int size(int x){
        return siz[find(x)];
    }
} dsu;

标签:DSU,struct,int,查集,基础,带权
From: https://www.cnblogs.com/9102qyy/p/18425428

相关文章

  • Go语言基础-常见编码(Json、Base64)
    编码jsonjson是go标准库里自带的序列化工具,使用了反射,效率比较低easyjson值针对预先定义好的json结构体对输入的json字符串进行纯字符串的截取,并将对应的json字段赋值给结构体easyjson-allxxx.go生成go文件中定义的结构体对应的解析xxx.go所在的package不能是mainfunce......
  • JVM基础知识(二)Java内存模型
    java线程之可见性volatile不需要加锁,比synchronized更轻量级,不会阻塞线程;从内存可见性角度看,volatile读相当于加锁,volatile写相当于解锁。synchronized既能保证可见性,又能保证原子性;volatile只能保证可见性,无法保证原子性。同步退出同步块->释放监视器->刷......
  • Java入门基础知识点整理大放送,赶紧收藏吧!
    浮点数:float??????4个字节double??8个字节布尔:boolean??1个字节引用类型:字符串String、类class、枚举enum、接口interface3、二进制(1)计算机中的数据都以二进制数据保存。(2)计算机信息的存储单位:位(bit):是计算机存储处理信息的最基本的单位字节(byte):一个字节有8个位组......
  • 十四、 软件可靠性基础知识(考点篇)
    1软件可靠性基本概念软件可靠性是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。软件可靠性和硬件可靠性区别(1)复杂性:软件复杂性比硬件高,大部分失效来自于软件失效。(2)物理退化:硬件失效主要是物理退化所致,软件不存在物理退化。(3)唯一性:软件是唯一......
  • 【编程基础知识】哪些行为算跨域,跨域会引发什么问题,怎么解决
    哪些行为算跨域(CORS,Cross-OriginResourceSharing)跨域是指浏览器在处理网页时,由于同源策略(Same-OriginPolicy)的限制,限制了来自与当前请求网页不同源的资源请求。这里的“源”(Origin)指的是协议、域名和端口的组合。以下是一些常见的跨域行为:不同域名的请求:从http://exa......
  • Spring原理基础
    Spring高级1容器与Bean1.1接口容器1.1.1BeanFactory是什么@SpringBootApplicationpublicclassShowApplication{publicstaticvoidmain(String[]args){ConfigurableApplicationContextcontext=SpringApplication.run(ShowApplication.class,arg......
  • Shell脚本编程基础(四)
    五种常用文本工具和Crontab调度工具(一)cut:用于从文本中提取特定的字段或列。grep:用于搜索文本中的特定模式。awk:用于处理和分析文本。sed:用于文本替换和编辑。sort:用于对文本行进行排序。CrontabCrontab是用于定时任务调度的工具,可以用来定期执行脚本或命令。......
  • Shell脚本编程基础(一)
    LinuxShell编程入门在Linux系统中,Shell是一个重要的工具,它充当应用程序与计算机内核的交互桥梁。本文将介绍Shell编程的一些基本知识,并通过实例帮助你更好地理解和使用它。什么是Shell?Shell是一种解释型的编程语言,通过解释器将代码翻译成计算机可理解的语言。在......
  • 如何为您的应用程序或网站选择正确的通知基础设施
    分解通知基础设施的本质要构建弹性通知基础架构,熟悉其关键组件非常重要:消息队列和代理:通知骨干任何强大的通知基础设施的支柱都是消息队列,它管理通知流。通过异步处理消息,消息队列有助于避免瓶颈并确保通知系统内的容错能力。这些队列临时存储然后根据需要发送通知。RabbitMQ和A......
  • 5. 数字证书与公钥基础设施
    5.数字证书与公钥基础设施(1)PKI的定义、组成及应用PKI(PublicKeyInfrastructure,公钥基础设施)是一个使用公钥技术来提供安全服务的框架。它定义了如何管理和维护公钥,以及如何通过证书来验证公钥的真实性。PKI的核心组成部分包括:证书颁发机构(CA,CertificateAutho......