并查集模板
Posted 松手丶明晃晃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并查集模板相关的知识,希望对你有一定的参考价值。
#include<bits/stdc++.h> using namespace std; int f[1000],n,m,k,sum=0; void init(){ int i; for(int i=1;i<=n;i++) f[i]=i; return ; } int getf(int v){ if(f[v]==v){ return v; }else{ return f[v]=getf(f[v]); } } void merge(int v,int u){ int t1=getf(v); int t2=getf(u); if(t1!=t2){ f[t2]=t1; } return ; } int main(){ cin>>n>>m; init(); for(int i=1;i<=m;i++){ int x,y; cin>>x>>y; merge(x,y); } for(int i=1;i<=n;i++){ if(f[i]==i){ sum++; } } cout<<sum<<endl; return 0; }
以上是关于并查集模板的主要内容,如果未能解决你的问题,请参考以下文章
带权并查集(含种类并查集)经典模板 例题:①POJ 1182 食物链(经典)②HDU - 1829 A bug's life(简单) ③hihoCoder 1515 : 分数调查(示例代码(代