7 3 並查集搜尋

2022-09-07 00:12:30 字數 743 閱讀 1225

並查集演算法是乙個利用結點關係,進行分類合組的演算法

並查集可以通過乙個一維陣列來實現

我們把每乙個點視作乙個"獨立的,只有乙個結點"的樹

之後我們可以通過一些條件,逐漸將這些樹合併成一棵大樹

合併的過程,其實就是找統一的父節點的過程,我們可以自定兩條原則:

1.相異的情況下,把右邊的父節點改為左邊的父節點。視作二者合併成了一組

2.通過兩者最高的父節點來進行比較

另外,既然我們通過層層推進找到了某個點的父節點,那麼我們在"統一"之後,也可以順便的把路上的其它結點修改,這樣會方便我們的二次尋找

#include int f[1001] =  s,n,m,sum = 0 ;

//最開始的初始化

void init()

//這是找爹的遞迴函式,不停的尋找直到找到最高父節點為止

int getf(int v)

else

}//合併兩個子集的函式、

void merge(int v , int u)

return ;

}//主程式

int main()

//掃瞄列印結果

for(i=1;i<=n;i++)

printf("%d \n",sum);

getchar();getchar()

return 0 ;

}

並查集也被稱為「不相交集」資料結構

團夥 並查集 題解 並查集 搜尋

1 1270海戰 題目描述 在這個著名的遊戲中,在乙個方形的盤上放置了固定數量和形狀的船隻,每只船卻不能碰到其它的船。在這個題中,我們僅考慮船是方形的,所有的船隻都是由圖形組成的方形。編寫程式求出該棋盤上放置的船隻的總數。輸入輸入檔案頭一行由用空格隔開的兩個整數r和c組成,1 r,c 1000,這兩...

並查集 並查集

本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...

X Distance 搜尋或並查集

給你乙個帶權無向圖,n個節點,m條邊,乙個節點到另乙個節點的路徑的cost等於路徑上所有邊權值的最大值,求有多少對節點路徑cost等於x language c cpu time usage 204 ms memory usage 9020 kb source code 1361 bytes incl...