合根植物——并查集模板

本人水平有限,仅供学习,如有发现错误,感谢指出

题目链接:传送门(点我)
在这里插入图片描述
在这里插入图片描述

分析:就是并查集模板。不了解并查集的朋友可以先去看这个视频学习。

视频链接: 传送门(点我)

本人代码为了方便和刷算法的速度,码风诡异,喜欢压行,写工程禁用,文学爱好者谨慎观看。这里没有像视频里面一样利用rank[] 数组优化,因为没有必要。


AC代码:

#include<bits/stdc++.h>
#define MAXN 1005
using namespace std;
int p[MAXN*MAXN],cnt[MAXN*MAXN],n,m,a,b,k,ans;
int f(int x){
    
    return p[x]==-1?x:p[x]=f(p[x]);}//find root and compressed path

int main()
{
    
    
    memset(p,-1,sizeof(p));
    cin>>m>>n>>k;
    while(k--){
    
    
        cin>>a>>b;
        if(f(a)!=f(b))p[f(a)]=b;//merge
    }
    for(int i=1;i<=n*m;i++)cnt[f(i)]=1;
    for(int i=1;i<=n*m;i++)if(cnt[i])ans++;
    return cout<<ans<<endl,0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43615816/article/details/114845225
今日推荐