1 条题解

  • 1
    @ 2023-10-09 11:25:37

    并查集模板题,没背过的赶紧背啦

    Python:

    n, m = input().split()
    n = int(n);m = int(m)
    
    f = dict()
    
    def find(x):
        if f[x] == x:
            return x
        else:
            f[x] = find(f[x])
            return f[x]
        
    for i in range(1, n+1):
        f[i] = i
    
    for i in range(1, m+1):
        p1, p2, p3 = input().split()
        p1 = int(p1);p2 = int(p2);p3 = int(p3)
        if p1 == 1:
            f[find(p2)] = find(p3)
        else:
            if find(p2) == find(p3):
                print("Yes")
            else:
                print("No")
    

    C++:

    #include<bits/stdc++.h>
    using namespace std;
    int i, j, k, n, m, s, ans, f[10010], p1, p2, p3;
    int find(int k){
        if(f[k]==k)return k;
        return f[k]=find(f[k]);
    }
    int main(){
        cin>>n>>m;
        for(i=1;i<=n;i++) f[i]=i;
        for(i=1;i<=m;i++){
            cin>>p1>>p2>>p3;
            if(p1==1) f[find(p2)]=find(p3);
            else
                if(find(p2)==find(p3))
                    cout<<"Yes"<<endl;
                else
                    cout<<"No"<<endl;
        }
        return 0;
    }
    
  • 1

灰灰的插件集 / 【模板】初级并查集

信息

ID
1003
难度
3
分类
并查集 点击显示
标签
递交数
6
已通过
3
通过率
50%
上传者