並查集最主要的是查找元素是否在同一棵樹上,或者看看所給的元素分佈在幾棵樹上。
最主要的是兩個函數一個是尋找根節點的函數,另一個則是壓縮路徑的函數,根節點有一定的特性,
根節點的數等於它本身。
附上兩個最基本的函數:
1.尋找根節點的函數;
int findd(int x)
{
if(a[x]==x)
return x;
else
return a[x]=findd(a[x]);
}
2.壓縮路徑的函數:
void cover(int xx,int yy)
{
int pp,qq;
pp=findd(xx);
qq=findd(yy);
if(pp!=qq)
a[qq]=pp;
return ;
}
注:兩個函數使用之前必須初始化爲他自己的下標。