acwing 836 合并区间

简介: acwing 836 合并区间

活动 - AcWing

并查集

#include<iostream>
#include<algorithm>
#include<cstring>
 
using namespace std;
const int N = 1e5 + 10;
int a,b,n,m;
int p[N];//记录每一个点的父节点
           //这里后来会用到路径压缩,这样的话得到的就是他的根节点,也就是祖宗节点
 
int find(int x){
    if(p[x] != x) p[x] = find(p[x]);//如果当前这个数不等于他的父节点,那就继续找他的父节点的父节点
    return p[x]; //最后返回的一定是根节点,也就是祖宗节点
}
 
int main(){
    cin >> n >> m ;
    for(int i = 1 ; i <= n ; i ++ ) p[i] = i ;
    while(m -- ){
        char c[2];
        scanf("%s%d%d",&c,&a,&b);
        if(*c == 'M') p[find(a)] = find(b);//如果想合并两个集合,那就让a的祖宗节点变成b的祖宗节点
        else {
            if(find(a) == find(b)) {
                cout << "Yes" << endl ; 
            }else {
                cout << "No" << endl ;
            }
        }
    }
    return 0;
}
相关文章
|
5月前
|
C++ Python
leetcode-56:合并区间
leetcode-56:合并区间
57 0
|
12月前
|
算法
【Leetcode-70.爬楼梯 -88.合并两个有序数组】
【Leetcode-70.爬楼梯 -88.合并两个有序数组】
34 0
|
2天前
|
C++
Leetcode第56题(合并区间)
这篇文章介绍了LeetCode第56题“合并区间”的解题方法,通过排序和贪心策略合并重叠区间,并提供了C++的代码实现。
6 0
Leetcode第56题(合并区间)
|
2月前
|
算法
LeetCode第56题合并区间
LeetCode第56题"合并区间"的解题方法,通过排序区间并判断重叠后进行合并,有效解决了区间合并问题。
LeetCode第56题合并区间
|
5月前
力扣56.合并区间
力扣56.合并区间
|
5月前
代码随想录Day30 贪心05 LeetCode T435无重叠区间 T763划分字母区间 T56 合并区间
代码随想录Day30 贪心05 LeetCode T435无重叠区间 T763划分字母区间 T56 合并区间
48 0
|
存储
图解LeetCode——56. 合并区间
图解LeetCode——56. 合并区间
122 1
|
存储
LeetCode 56. 合并区间
LeetCode 56. 合并区间
65 0
|
算法 异构计算