并查集学习

并查集学习:

主要思想:对一个集合进行分类,分成多个相关联的集合。

优化方法:路径压缩


int p[nMax];

void init()
{
	for(int i=0;i<nMax;p[i]=i,i++);
}

int find_set(int a)
{
	return p[a]==a?a:p[a]=find_set(p[a]);//状态压缩:p[a]=find_set(p[a])
}

void make_set(int a,int b)
{
	p[find_set(a)]=find_set(b);//这样可以提高效率
}

bool is_set(int a,int b)
{
	return find_set(a)==find_set(b);
}


你可能感兴趣的:(并查集学习)