今天学习了《并查集》这一课
并查集是一种用于分离集合操作的抽象数据类型。它所处理的是“集合”之间的关系,即动态地维护和处理集合元素之间复杂的关系,当给出两个元素的一个无序对(a,b)时,需要快速“合并”a和b分别所在的集合,这其间需要反复“查找”某元素所在的集合。“并”、“查”和“集”三字由此而来。在这种数据类型中,n个不同的元素被分为若干组。每组是一个集合,这种集合叫做分离集合。并查集支持查找一个元素所属的集合以及两个元素各自所属的集合的合并。
以下是并查集的框架代码
int f[maxn]
int find(int x){
if (f[x]!=x) f[x]=find(f[x]);
return f[x];
}
void union(int x,int y){
int fx=find(x);
int fy=find(y);
if (fx!=fy) f[fx]=fy;
}
main(){
for(int i=1;i<=n;i++) f[i]=i;
……
}
这一课还是挺难的,我只听懂了一点