zoukankan      html  css  js  c++  java
  • PAT (Advanced Level) 1107. Social Clusters (30)

    简单并查集。

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<vector>
    #include<map>
    #include<queue>
    #include<stack>
    #include<algorithm>
    using namespace std;
    
    const int maxn=1000+10;
    int fa[maxn];
    int num[maxn];
    int n;
    vector<int>g[maxn],ans;
    
    int f(int x)
    {
        if(x!=fa[x]) fa[x]=f(fa[x]);
        return fa[x];
    }
    
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            int num; scanf("%d:",&num);
            while(num--)
            {
                int hob; scanf("%d",&hob);
                g[hob].push_back(i);
            }
        }
    
        for(int i=0;i<=n;i++) fa[i]=i;
    
        for(int i=1;i<=1000;i++)
        {
            if(g[i].size()==0) continue;
            int u=f(g[i][0]);
            for(int j=1;j<g[i].size();j++)
            {
                int v=f(g[i][j]);
                if(u!=v) fa[v]=u;
            }
        }
    
        for(int i=1;i<=n;i++) f(i);
    
        memset(num,0,sizeof num);
        for(int i=1;i<=n;i++) num[f(i)]++;
        for(int i=1;i<=n;i++) if(num[i]>0) ans.push_back(num[i]);
    
        sort(ans.begin(),ans.end());
        printf("%d
    ",ans.size());
        for(int i=ans.size()-1;i>=0;i--)
        {
            printf("%d",ans[i]);
            if(i>0) printf(" ");
            else printf("
    ");
        }
    
        return 0;
    }
  • 相关阅读:
    .NET 4.0 中的契约式编程
    DELL安装Windows Server 2019
    Mysql 5.7.34免安装版本
    MQTT
    WPF属性
    WPF数据绑定
    git系列之(五)git stash 命令
    Vue.js
    git 对比两个分支差异
    TPL 之二 TransformBlock
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5642561.html
Copyright © 2011-2022 走看看