并查集模板题----P3367 【模板】并查集

2023-05-16

题目描述

如题,现在有一个并查集,你需要完成合并和查询操作。

输入格式

第一行包含两个整数N、M,表示共有N个元素和M个操作。

接下来M行,每行包含三个整数Zi、Xi、Yi

当Zi=1时,将Xi与Yi所在的集合合并

当Zi=2时,输出Xi与Yi是否在同一集合内,是的话输出Y;否则话输出N

输出格式

如上,对于每一个Zi=2的操作,都有一行输出,每行包含一个大写字母,为Y或者N

输入输出样例

输入 #1复制

4 7
2 1 2
1 1 2
2 1 2
1 3 4
2 1 4
1 2 3
2 1 4  
输出 #1复制

N
Y
N
Y
  

说明/提示

时空限制:1000ms,128M

数据规模:

对于30%的数据,N<=10,M<=20;

对于70%的数据,N<=100,M<=1000;

对于100%的数据,N<=10000,M<=200000。

 

特别注意:fa数组需要进行初始化,每个结点的祖先都是自己

AC代码兼模板


#include <iostream>
using namespace std;
const int NN = 1e6+10;
int N,M;
int fa[NN];

int find(int x){ //查询,并压缩路径
    if(x != fa[x])
        fa[x] = find(fa[x]);
    return fa[x];
}

void join(int x,int y){ //合并x,y所在的集合
    int fx = find(x),fy = find(y);
    if(fx != fy)
        fa[fx] = fy;
}

int main(){
    cin>>N>>M;
    for(int i = 1;i<=N;i++) fa[i] = i;//初始化每个结点的祖先是自己
    int op,t1,t2;
    while(M--){
        scanf("%d%d%d",&op,&t1,&t2);
        if(op == 1){
            join(t1,t2); //合并
        }else{
            if(find(t1) == find(t2)){ //查询是否是同一个祖先
                cout<<"Y"<<endl;
            }else{
                cout<<"N"<<endl;
            }
        }
    }

}  

 

转载于:https://www.cnblogs.com/bigbrox/p/11312272.html

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

并查集模板题----P3367 【模板】并查集 的相关文章

  • 宝藏下载神器,python一键下载B站视频

    B站无疑是一个宝藏地带 xff0c 作为一个宝藏 xff08 老 xff09 男孩 xff0c 请自行忽略 xff08 老 xff09 字 xff0c B站 xff0c 一个学习的天堂 xff0c 请一定珍惜 xff0c 好好使用 xff0
  • Python发邮件脚本,Python调用163邮箱SMTP服务实现邮件群发

    邮件营销 xff0c 一个昔日辉煌 xff0c 如今没落的广告营销方式 xff0c 曾经的恶意广告邮件群发 xff0c 到现在还存留着的大站协议群发 xff0c 可能还是有不少人能够做到正常群发邮件 xff0c 但大概率很多人都不会点开邮件
  • iOS-UICollectionViewCell自适应文字宽度

    自定义cell pragma mark 自定义cell import 34 SelfSizingCollectCell h 34 import 34 Masonry h 34 define itemHeight 60 64 implemen
  • Linux - Linux下Java安装路径查找;配置Java环境变量

    一 查看Java的安装路径 1 已经安装好了JDK xff0c 也配置了环境变量 1 执行 java version java version 出现了版本号 xff0c 表示安装过了JDK xff0c 配置了环境变量 2 在配置过jdk的情
  • String 转 Enum 对象关键字 Java

    java中 String 字符转成 Enum对象关键字的方法 xff1a 使用valueOf转换
  • 利用select函数实现在Linux环境下实现一个聊天室程序

    C写的 要求 xff1a 用户默认处于广播模式 xff0c 一个客户在其客户端发送的消息 xff0c 其它客户端用户全部可以收到 xff1b 程序支持下列命令 help 显示帮助信息 xff08 思考 xff1a 信息是放在客户端还是服务器
  • 使用UICollectionView做tag显示的时候的对齐方式

    span class token keyword import span span class token builtin UIKit span span class token keyword enum span span class t
  • 字符串切片练习

    获取字符串中汉字的个数 去掉字符串中所有的空格 将字母全部转换为大写和小写 根据标点符号对字符串进行分行 a 61 input 34 请输一串字符 xff1a 34 for i in range 0 len a if a i 61 61 3
  • AngularJs Type error : Cannot read property 'childNodes' of undefined

    一 在AngularJs和JQuery插件共存咋项目中经常会遇到如下异常 html view plain copy Type error Cannot read property 39 childNodes 39 of undefined
  • Go基础入门

    Go vscode配置go开发环境 1 下载vscode https code visualstudio com 2 安装sdk https golang google cn dl 进入这个界面后找到对应版本 go版本 windows am
  • oracle12c常用命令整理

    1 oracle备份方式了解 Oracle的常规备份无非是exp imp expdp impdp rman三种方式 exp imp简单方便 xff0c 适用于跨db版本 跨os平台 异地备份等情况 xff0c 是大家最常用的一种备份方式 e
  • 简述Android手机常用的设备ID

    一 简介 1 设备ID xff1a 简单来说就是一串符号 xff08 或者数字 xff09 类似于我们的身份证号 xff0c 映射现实中硬件设备 排除特殊情况 xff08 模拟器等 xff09 xff0c 设备ID和设备是一一对应的 xff
  • Nuitka将Python源代码编译成可执行文件,注意的地方

    Nuitka的GitHub地址 在Nuitka之前我们最常用的打包工具就是Pyinstaller了 xff0c 但是经过反复考虑 xff0c 我觉得Nuitka也还是很有必要了解记录一下 xff0c 它可以直接将Python源码打包成dll
  • java操作zip压缩文件加密码和解密工具类

    java操作zip压缩文件加密码和解密工具类 lt zip压缩文件工具类 gt lt dependency gt lt groupId gt net lingala zip4j lt groupId gt lt artifactId gt
  • 在CentOS7虚拟机中安装mysql5.7

    写在前面 xff1a 安装环境 xff1a CentOS7虚拟机 xff1b 安装软件 xff1a mysql5 7版本 xff1b 安装时需要切换为root用户权限 安装步骤 xff1a 1 添加官方的yum源 xff0c 创建并编辑my
  • wsl报0x80040326

    今天 开始 运行 wsl 跳出来一个窗口一闪没了 开始 运行 cmd wsl 看到2行报错信息 xff1a Error 0x80040326 Error code Wsl Service CreateInstance 0x80040326
  • VTK笔记——vtkCamera的理解和用法

    其实 xff0c 网上有不少介绍VTK Camera的内容 在3D图形学中 xff0c 相机对于渲染对象来说是必不可少的 我们可以通过它来观察物体 xff0c 包括执行放大缩小 移动相机等操作 xff0c 所以它是我们需要了解的基础和重要的
  • 树莓派4安装Ubuntu20.10桌面版记录(64位系统arm架构desktop版)

    前言 xff1a 这是我在树莓派4上安装Ubuntu20 10桌面版 xff08 64位arm xff09 总结的一些坑 xff0c 欢迎互相交流 xff01 我的博客 xff1a https www 515code com 一 准备 下载
  • 计算机二级C语言基础选择易错题及答案解析(四)

    1 设有定义 char s 81 int i 61 0 以下不能将一行 不超过80个字符带有空格的字符串正确读入的语句或语句组是 解析 xff1a 字符串的输入不能用 span class token function scanf span
  • Ubuntu解决无线被禁用的方法

    查看当前wifi开关的状态 xff0c 有可能是软件block xff0c 也有可能是硬件block 终端输入命令 xff1a rfkill list all 返回电脑目前安装的所有网卡驱动 xff1a 0 ideapad wlan Wir

随机推荐