Union-Find

Last-modified: 2013-11-08 (金) 17:32:37
int par[N];

int init(){
	for(int i=0;i<N;i++) par[i]=i;
}

int find(int x){
	if(x==par[x])return x;
	return par[x]=find(par[x]);
}

bool same(int x,int y){
	return find(x)==find(y);
}

void unite(int x,int y){
	x=find(x);
	y=find(y);
	if(x==y)return;
	par[y]=x;
}