并查集整理

Posted 嗯我想想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并查集整理相关的知识,希望对你有一定的参考价值。

并查集
可以解决的问题:

核心操作 find

int find(int x) 
    if (p[x] != x) p[x] = find(p[x]);
    return p[x];

初始化(最开始代表一个点是一个集合)

for(int i = 1; i <= n; i++)
	p[i] = i;

判断两个元素是否属于一个集合

if(find(a) == find(b))
	cout << "Yes" << endl;
else
	cout << "No" << endl;

判断最后有几个集合

int cnt = 0;
for(int i = 1;i <= n; i++)
	if(p[i] == i) cnt++

以上是关于并查集整理的主要内容,如果未能解决你的问题,请参考以下文章

并查集整理

并查集整理

并查集整理

并查集模板整理

算法整理-并查集和分治

算法整理-并查集和分治