1 条题解

  • 0
    @ 2023-7-11 14:41:54
    #include<bits/stdc++.h>
    using namespace std;
    const int N=110;
    int p[N],a[N];
    int n,k;
    int find(int x){
        if(p[x]!=x) p[x]=find(p[x]);
        return p[x];
    }
    void bing(int x,int y){
        x=find(x);
        y=find(y);
        p[x]=y;
    }
    
    int main(){
        cin>>n>>k;
        int mx=0;
        int cnt=0;
        for(int i=1;i<=n;i++){
            p[i]=i;
        }
        for(int i=1;i<=k;i++){
            int x,y;
            cin>>x>>y;
            bing(x,y);//合并两个集合
        }
        for(int i=1;i<=n;i++){
            a[find(i)]++;//表示i这个元素作为家庭成员让其祖宗元素名下的家庭人员数目+1
            if(p[i]==i){
                cnt++;//统计根数目来统计家庭数目
            }
    for(int i=1;i<=n;i++){
        mx=max(mx,a[i]);
    }
        }
        cout<<cnt<<" "<<mx;
    }
    
    • 1

    【并查集概念题】家庭问题(family)

    信息

    ID
    378
    时间
    1000ms
    内存
    128MiB
    难度
    8
    标签
    递交数
    11
    已通过
    7
    上传者