首页 > 其他分享 >ac 836合并集合

ac 836合并集合

时间:2022-09-20 12:44:55浏览次数:47  
标签:ac 836 int 祖宗 find 编号 集合 节点

并查集:

  1. 将两个集合合并
  2. 询问两个元素是否在同一个集合里

基本原理: 每个集合用一棵树来表示,树根的编号就是整个集合的编号,每个节点储存他的父节点,p[x]表示x的父节点

  1. 判断父节点 if(p[x] == x)
  2. 如何求x的集合编号: while(p[x] != x) x = p[x]
  3. 如何合并两个集合: px是x集合编号py是y的集合编号 p[x] = y (即两个树随便其中一个根节点指向另一个根节点)

主要是一个find函数,这个函数的作用就是返回参数x的祖宗节点, 如果p[x]不是祖宗节点,就让p[x]等于祖宗节点(递归) 最后返回他的祖宗节点
如果合并就让两个树随便其中一个根节点指向另一个根节点

#include<bits/stdc++.h>
using namespace std;

const int N = 100010;
int p[N];

int find(int x){
    //返回x所在集合的编号(即根节点,祖宗节点)
    if (p[x] != x) p[x] = find(p[x]);
    return p[x];
}
int main() {
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        p[i] = i;
    }
    for (int i = 0; i < m; i ++) {
        char c;
        int x, y;
        cin >> c >> x >> y;
        if (c == 'M') {
             p[find(x)] = find(y);
        }
        else if (c == 'Q') {
            if (find(x) == find(y)) puts("Yes");
            else puts("No");
        }
    }
}

标签:ac,836,int,祖宗,find,编号,集合,节点
From: https://www.cnblogs.com/echoT/p/16709619.html

相关文章

  • 【部署系列】Docker 部署 acme.sh
    安装环境Docker安装具体的安装直接参考Docker官方文档即可:https://docs.docker.com/engine/install/以centos系统为例:1、卸载旧版本sudoyumremovedocker\......
  • 错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
    今天又遇到一个这种错误,头都大了(我是看尚硅谷的视频配的Hadoop),网上搜了以下原因,(59条消息)hadoop3.1.3下MapReduce操作出现错误:找不到或无法加载主类org.apache.hadoop.......
  • SpringBoot实战电商项目商城(50k+star)地址:github.com/macrozheng/...
    经常遇到小伙伴问我之前写的技术文章在哪里。或者用很久以前的部署文档问我,为什么不能按照这篇文章进行部署。其实如果他们上过我的实战教程网站,估计就不会出现这样的问题......
  • JWT authentication: Best practices and when to use it
    Editor'snote:ThisJWTauthenticationtutorialwaslastupdatedon1July2021.Itmaystillcontaininformationthatisoutofdate.InthisJWTauthenticat......
  • 如何在 React 中进行 Axios POST 请求?
    如何在React中进行AxiosPOST请求?我们将制作一个AxiosPOST请求创建数据或将数据插入数据库。我们将在POST请求中发送请求参数,并且还将举例发送HTTP标头。在......
  • 我再也不会使用 create-react-app 了。
    我再也不会使用create-react-app了。对于我们必须先学习才能做的事情,我们通过做来学习。在你开始阅读之前,请给我一个关注和分享。如果您正在使用react并在启动新......
  • RTL8367/N/RB/S/SC系列千兆交换机方案选型参考
    RTL8367系列方案主要有:RTL8367-VB-CG、RTL8367N-VB-CG、RTL8367RB-VB-CG、RTL8367S-CG、RTL8367SC-CG主要体现在封装和功能上:单一功能的是RTL8367-VB-CG(封装QFP-128)和RTL......
  • React Native — REST API 调用
    ReactNative—RESTAPI调用ReactNative/JSShorts的一部分:切中要害|简单的1.0获取fetchAPI是一个现成的JS函数。我们可以使用它在我们的ReactNative......
  • 第十一章 Ansible-playbook变量注册和Facts缓存
    一、变量注册概述当absible的模块在运行之后,其实都会返回一些result结果,就像是执行脚本,我们有的时候需要脚本给我们一些return返回值,我们才知道,上一步是否可以执行成功,但......
  • jdk8集合查询
    List<String>ids=list.stream().map(ContractModificationBasicInfoDTO::getUuid).collect(Collectors.toList());privateCompletedBidSectionInfoDTOentityToDTO(Bi......