zoukankan      html  css  js  c++  java
  • 7-25 朋友圈 (25分)-并查集

     解题思路:并查集思想

    #include <stdio.h>
    #define Max 30000+1
    
    int book[Max];
    int f[Max];
    int n,m;
    int getf(int x) {
        if(f[x]==x)
            return x;
        else return f[x]=getf(f[x]);
    }
    void Merge(int x,int y) {
        int a=getf(x);
        int b=getf(y);
        f[b]=a;
    }
    int Init() {
        scanf("%d %d",&n,&m);
        int i;
        for(i=1; i<=n; i++) {
            f[i]=i;
            book[i]=0;
        }
        for(i=0; i<m; i++) {
            int x,j;
            scanf("%d",&x);
            int a[x];
            for(j=0; j<x; j++) {
                scanf("%d",&a[j]);
            }
            for(j=1; j<x; j++) {
                Merge(a[j-1],a[j]);
            }
        }
    }
    
    void FindMax() {
        int i;
        for(i=1; i<=n; i++) {
            book[getf(i)]++;
        }
        int ans=0;
        for(i=1;i<=n;i++)
        {
            if(book[i]>ans)
            ans=book[i];
        }
        printf("%d",ans);
    }
    int main() {
        Init();
        FindMax();
        return 0;
    }
  • 相关阅读:
    文件操作(IO 技术)
    异常
    面向对象进阶
    面向对象
    函数用法和底层分析
    控制语句
    集合
    字典
    元组 tuple
    Python3 列表
  • 原文地址:https://www.cnblogs.com/snzhong/p/12653551.html
Copyright © 2011-2022 走看看