1. 程式人生 > >並查集演算法

並查集演算法

#include<stdio.h>
int pre[10];
int find(int x)  /*查詢祖先節點*/ 
{
	int r=x;
	while(pre[r]!=r)
	{
		r=pre[r];
	}
	int i=x,j;
	while(i!=r)  /*壓縮路徑*/ 
	{
		j=pre[i];  
		pre[i]=r;
		i=j;
	}
	return r; 
}
void join(int x,int y)
{
	int a=find(x);
	int b=find(y);
	if(a!=b)
	{
		pre[a]=b;   
	}
}
int main()
{
	for(int i=0;i<10;i++)
	{
		pre[i]=i;
	}
}