题解 | 并查集的实现

#include <iostream>
using namespace std;
int n,m,f[1000005];
void init(int n){
    for(int i=1;i<=n;i++){
        f[i]=i;
    }
}
int find(int i){
    if(i!=f[i]){
        f[i]=find(f[i]);
    }
    return f[i];
}
void uni(int a,int b){
    f[find(a)]=find(b);
}
bool issameset(int a,int b){
    return find(a)==find(b);
}

int main() {
    cin>>n>>m;
    init(n);
    for(int i=0,t,a,b;i<m;i++){
        scanf("%d %d %d",&t,&a,&b);
        if(t==1){
            if(issameset(a,b)){
                cout<<"Yes\n";
            }
            else cout<<"No\n";
        }
        else{
            uni(a,b);
        }
    }
}

左56

全部评论

相关推荐

抱抱碍事梨a:三点建议,第一点是建议再做一个项目,把自我介绍部分顶了,第二点是中南大学加黑加粗,第三点是建议加v详细交流
点赞 评论 收藏
分享
被加薪的哈里很优秀:应该继续招人,不会给你留岗位的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务