并查集
并查集是一种数据结构,便于查找同一特性的元素,因而是我们需要学习的
并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。常常在使用中以森林来表示。
集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。
-------摘自百科
下面代码:
const int maxn=10001; int father[maxn]; void dateins()//初始化数组 { for(i=1;i<=n;i++) father[i]=i; } int _findx(int x)//查找所在的数,赋值 { if(father[x]!=x) father[x]=_find(father[x]) return father[x]; } void datecin() {
int m; scanf("%d",&m); for(int i=1;i<=m;i++) { scanf("%d %d",&a,&b); a=_find(a); b=_find(b); father[a]=b; } } void datecal(int a,int b) { a=_find(a); b=_find(b); if(a==b) { printf("Yes\n"); } else { printf("No\n"); } }
以上为并查集的内容,其实就是建立数组指向某个值,最后将其统一到一个点,从而统一到一个集合,我们可以根据这个点判断它是否在这个集合里