8/5并查集

dxy09tj / 2023-08-05 / 原文

#include<bits/stdc++.h>
using namespace std;

int n,m;
int parent[1000005];

void init(int n){
    for(int i=1; i<=n; i++){
        parent[i]=i;
    } 
}

int find(int x){
    if(parent[x]==x){
        return x;
    }else {
        parent[x]=find(parent[x]);
        return parent[x];
    }
}


int main(){
    bool b[1000005];
    memset(b,false,sizeof(b));
    int s[1000005];
    memset(s,0,sizeof(s));
    int xx,yy;
    cin>>n>>m;
    init(n);
    for(int i=1; i<=m; i++){
        cin>>xx>>yy;
        int faa=find(xx);
        int fbb=find(yy);
        if(faa!=fbb)
            parent[faa]=fbb;
    }
    for(int i=1; i<=n; i++){
        s[find(i)]++;
    }
    
    sort(s+1,s+n+1);
    
    cout<<s[n]<<endl;
    return 0;
}