并查集是一个非常好用的东西,而且就连B阶人都学得会

int a[10006],n;

void make_set(){
	for(int i=1;i<=n;i++){
		a[i]=i; 
	}
}//让每个元素自成一个集合
 
int find(int x){
	if(a[x]==x)return x;
	else return find(a[x]);
}//查找根节点

void unions(int x,int y){
	a[find(y)]=x;
}//合并集合