并查集入门1
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。
下面是c++实现最简单的版本
// An highlighted block
#include<iostream>
using namespace std;
#define maxsize 100000
int node[maxsize];
int n,m;//n个点(对象),m个边(关系)
//让每一个节点都指向自己 作为一个单集合
void init(int n){
for(int i=0;i<n;i++){
node[i]=i;
}
}
//查找当前元素的根节点
int find(int x){
if(x==node[x]){
return x;
}
return find(node[x]);
}
//合并x,y所在集合
void unite(int x,int y){
x=find(x);
y=find(y);
if(x==y){
return;
}
node[x]=y;
}
bool isSame(int x,int y){
return find(x)==find(y);
}
void addData(){
cin>>n>>m;
for(int i=0;i<m;i++){
int x,y;
cin>>x>>y;
unite(x,y);
}
}
main(){
init(n);
addData();
cout<<isSame(1,2);
}
//测试数据
//8 6
//1 3
//1 5
//1 7
//2 4
//2 6
//3 8
运行结果如下:
第一次写博客,有不完备的地方欢迎指责哟