void init()//初始化函数
{
int i;
for(i = 1; i <= n; i ++)
f[i] = i;
return;
}
int find(int v)//查找根结点
{
if(f[v] == v)
return v;
else
{
//这里是路径压缩,每次在函数返回时,把遇到的结点改为根结点的编号
//提高找到根结点的速度
f[v] = find(f[v]);
return f[v];
}
}
void merge(int x,int y)//合并两个子集的函数
{
int t1,t2;
t1 = find(x);
t2 = find(y);
if(t1 != t2)
{
f[t1] = t2;
}
return;
}
本文详细介绍了并查集算法的基本概念及其实现方式,包括初始化、查找根结点及合并两个子集的操作,并通过代码示例展示了如何进行路径压缩以提高效率。
1128

被折叠的 条评论
为什么被折叠?



