并查集
并查集分为两种操作:合并和查找
查找:查找一个元素的祖先(元素所在树的根节点)
采用路径压缩提高效率
1 int getFather(int u){ 2 if(father[u]!=u){ 3 father[u]=getFather(father[u]); 4 } 5 return fatuer[u]; 6 }
合并:将两个不相交的集合合并
1 void Union(int x,int y){ 2 getFather(father[x])=getFather(y); 3 }
并查集分为两种操作:合并和查找
查找:查找一个元素的祖先(元素所在树的根节点)
采用路径压缩提高效率
1 int getFather(int u){ 2 if(father[u]!=u){ 3 father[u]=getFather(father[u]); 4 } 5 return fatuer[u]; 6 }
合并:将两个不相交的集合合并
1 void Union(int x,int y){ 2 getFather(father[x])=getFather(y); 3 }