首页 > 代码库 > 并查集模板
并查集模板
路径压缩+按秩合并
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 const int maxn=500010; 6 int a[maxn], n; 7 int fa[maxn]; 8 int rank[maxn]; 9 10 void init() { 11 for(int i=1;i<=n; i++) { 12 fa[i]=i; 13 rank[i]=0; 14 } 15 return ; 16 } 17 18 int find(int z) { 19 if(fa[z]!=z) 20 return fa[z]=find(fa[z]); 21 return fa[z]; 22 } 23 24 void unionn(int x,int y) { 25 x=find(x); 26 y=find(y); 27 if (x==y) return ; 28 if(rank[x]<rank[y]) { 29 fa[x]=y; 30 } 31 else { 32 fa[y]=x; 33 if (rank[x]==rank[y]) 34 rank[x]++; 35 } 36 return; 37 }
并查集模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。