並查集

並查集最主要的是查找元素是否在同一棵樹上,或者看看所給的元素分佈在幾棵樹上。

最主要的是兩個函數一個是尋找根節點的函數,另一個則是壓縮路徑的函數,根節點有一定的特性,

根節點的數等於它本身。

附上兩個最基本的函數:

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 ;
}

注:兩個函數使用之前必須初始化爲他自己的下標。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章