题目连接

https://www.acwing.com/problem/content/838/

思路

并查集模板题

  • 当操作是合并时,先判断两者是否在一个集合,然后合并(其实不用判断也可以,反正都是一个集合的)
  • 当操作是查询时,我们直接判断两者是否在一个集合里面就好了

代码

#include<bits/stdc++.h>
using namespace std;
//----------------自定义部分----------------
#define ll long long
#define mod 1000000009
#define endl "\n"
#define PII pair<int,int>int dx[4]={0,-1,0,1},dy[4]={-1,0,1,0};ll ksm(ll a,ll b) {ll ans = 1;for(;b;b>>=1LL) {if(b & 1) ans = ans * a % mod;a = a * a % mod;}return ans;
}ll lowbit(ll x){return -x & x;}const int N = 2e6+10;
//----------------自定义部分----------------
int n,m,q,a[N];int fa[N];
void init(){for(int i = 1;i <= n; ++i) fa[i] = i;
}
int find(int x){int t = x;while(t != fa[t]) t = fa[t];while(x != fa[x]) {int temp = fa[x];fa[x] = t;x = temp;}return x;
}int main()
{std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);cin>>n>>m;init();char op;int u,v;for(int i = 0;i < m; ++i) {cin>>op>>u>>v;u = find(u);v = find(v);if(op == 'M'){if(u != v) fa[v] = u;}else{puts(u==v?"Yes":"No");}}return 0;
}

AcWing 836. 合并集合相关推荐

  1. ~~并查集模板(数据结构)(附题目AcWing 836. 合并集合)

    (1)朴素并查集: int p[N]; //存储每个点的祖宗节点// 返回x的祖宗节点int find(int x){if (p[x] != x) p[x] = find(p[x]);return p ...

  2. 并查集板子:acwing836. 合并集合

    文章目录 并查集原理 并查集代码实现 并查集原理 并查集的常用操作: 将两个集合合并 询问两个元素是否在同一个集合中 并查集在近乎O(1)的时间内完成以上两个操作. 基本原理:每个集合用一棵树表示.树 ...

  3. 算法(并查集--合并集合)

    并查集–合并集合 一共有n个数,编号是1~n,最开始每个数各自在一个集合中. 现在要进行m个操作,操作共有两种: "M a b",将编号为a和b的两个数所在的集合合并,如果两个数已 ...

  4. java list集合合并_JAVA List合并集合

    import java.util.ArrayList; import java.util.List; public class test { public static void main(Strin ...

  5. AcWing 石子合并

    1.题目描述 设有N堆石子排成一排,其编号为1,2,3,-,N. 每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆. 每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和 ...

  6. AcWing基础算法课Level-2 第二讲 数据结构

    AcWing基础算法课Level-2 第二讲 数据结构 单链表 AcWing 826. 单链表3453人打卡 双链表 AcWing 827. 双链表2865人打卡 栈 AcWing 828. 模拟栈3 ...

  7. Acwing算法基础课学习笔记

    Acwing学习笔记 第一章 基础算法 快速排序 归并排序 二分查找 前缀和与差分 差分 位运算 离散化 第二章 数据结构 单链表 双链表 栈 队列 单调栈 单调队列 KMP算法 Trie 并查集 堆 ...

  8. AcWing算法题常用代码模板

    一.基础算法 1.常用代码模板 快速排序算法模板 -- 模板题 AcWing 785. 快速排序 算法步骤: ​ ①确定分界点 ​ ②调整区间 ​ ③递归处理左右两段 Tips: ​ ①如果输入数据量 ...

  9. 算法基础课【合集1】

    文章目录 基础算法 785. 快速排序 786. 第k个数 787. 归并排序 788. 逆序对的数量 789. 数的范围 790. 数的三次方根 791. 高精度加法 792. 高精度减法 793. ...

最新文章

  1. GitHub标星10,000+,Apache项目ShardingSphere的开源之路
  2. 大道至简:软件工程实践者的思想——第七、八章感想
  3. python人工智能-Python在人工智能中的作用
  4. RDIFramework.NET V2.9版本 WinFom部分新增与修正的功能
  5. html表格数据点击事件,如何在iview的table单元格里实现点击事件?
  6. python os path_python os.path模块
  7. Python四大金刚之二:字典
  8. TCP三次握手的序列号和确认号
  9. 使用preparedStatement执行sql语句 20210411094249744
  10. yolo如何降低loss_你一定从未看过如此通俗易懂的YOLO系列(从v1到v5)模型解读 (上)...
  11. 图解Http学习第三章
  12. 怎么根据输入的n来输入n组数组_【题解一维数组】1106:年龄与疾病
  13. ioctl 详细说明
  14. 鼠标的默认事件之oncontextmenu及其案例
  15. schema约束和引入
  16. 查看字节码的插件jclasslib设置成英文
  17. EasyAR(一)——显示模型
  18. 开源或免费虚拟主机管理系统
  19. Bluetooth Core Architecture Blocks----蓝牙核心架构
  20. USB设备的VID与PID

热门文章

  1. 数码相机如何当做摄像头(图文并茂版)
  2. 学习设计模式 - 中介者模式
  3. java中的object... args参数
  4. 本地Navicat连接虚拟机MySQL
  5. Unity 5.6 UGUI 按钮被遮挡
  6. HDU 4763 Theme Section ( KMP )
  7. 固定尺寸内存块的缓冲队列类及C++实现源代码
  8. 根据XPATH去查看修改xml文件节点的内容
  9. RMAN之REPORT命令
  10. 接口和一些抽象类的区别