编程语言
首页 > 编程语言> > 基础算法 836.合并集合

基础算法 836.合并集合

作者:互联网

并查集,使用数组实现,find函数中使用了巧妙的递归

#include<iostream>
using namespace std;

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

int find(int k){
    if(p[k] != k) p[k] = find(p[k]);
    return p[k];
}

int main(){
    int m,n;
    scanf("%d%d",&m,&n);
    for(int i = 1; i <= m; i++) p[i] = i;
    while(n --){
        char t[2];
        int a, b;
        scanf("%s%d%d",t,&a,&b);
        if(*t == 'M')p[find(a)] = find(b);
        else {
            if(find(a) == find(b)) puts("Yes");
            else puts("No");
        }
    }
    return 0;
}

  

标签:836,int,scanf,d%,namespace,算法,集合,find
来源: https://www.cnblogs.com/bz-2021/p/16216145.html