0
点赞
收藏
分享

微信扫一扫

并查集之合并集合

龙毓七七 2022-04-07 阅读 61
算法

合并集合

题目来源Acwing算法基础课

题目

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int N = 100010;
int p[N];
int find(int x){  //并查集找x
    if(x != p[x]) p[x] = find(p[x]);
    return p[x];
}
int main()
{
    for(int i = 0; i < N; i++)p[i] = i; //每个节点的祖先是它自己
    int n, m;
    cin >> n >> m;
    while(m--){
        string op;
        int a, b;
        cin >> op >> a >> b;
        if(op == "M"){
            if(p[a] != p[b])
                p[find(a)] = find(b);  //把a集合里面的数集中到b集合里面去;
        }
        else{
            if(find(a) == find(b))cout << "Yes" << endl;
            else cout << "No" << endl;
        }
        
    }
    return 0;
}
举报

相关推荐

0 条评论