並查集之 Find函式

2021-07-03 07:02:48 字數 482 閱讀 1443

發現自己寫了兩道題都把find函式寫得一塌糊塗。。。一題是沒有路徑壓縮過不了,一題是因為前面寫錯過弄混了,不三不四的。。。總結很重要啊!!

路徑壓縮:遞迴寫法:

int find (int x)  

return father[x]; }

非遞迴寫法:

int find(int x)  

return x; }

一般寫法:

非遞迴遞迴:

int find (int x)  

return x;// }

遞迴寫法:

int find(int x)

return x; }

總結:所謂的路徑壓縮,就是把根節點下面的所有子孫直接與根節點相連,這樣搜尋時搜尋深度為1,而一般的寫法只是把當前結點與它的父節點直接相連,那麼搜尋深度就》1了,時間就長了。要知道是不是路徑壓縮(有時我會弄混),只要看是不是把它的父節點設定為它的爺爺結點就行了。只針對個人總結。

並查集Find函式

void find int x int find int x while p x return x 並查集的應用有很多這裡給大家推薦一道很好的題。這道題的 如下 int pre maxn maxx maxn num maxn int find int x while p x return x voi...

並查集 並查集

本文參考了 挑戰程式設計競賽 和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 ...

並查集之The Suspects

在不傳播疾病的大學 nssu 中,有很多學生群體。同一組的學生經常互相交流,學生可以加入幾個小組。為了防止sars可能傳播,nsusu收集所有學生組的成員名單,並在其標準操作程式 sop 中執行以下規則。一旦乙個小組中的成員是嫌疑犯,該組中的所有成員都是嫌疑犯。然而,他們發現,當乙個學生被認定為嫌疑...