並查集簡單總結

2021-08-03 12:28:54 字數 718 閱讀 7472

一般地運用並查集可以簡單的判斷連通性,以及可以用來解決最短路問題。普通的並查集有路徑壓縮和按秩合併兩種優化的方法。路徑壓縮的並查集寫法如下

int getp(int a)

void

join(int a,int b)

帶權並查集可以理解為就是向量之間的關係。

如果要合併a和b則要注意的是兩個向量的加。

寫法以食物鏈為例

int getp(int x)//找尋父節點+路徑壓縮

int join(int typ,int x,int y)

f[fx]=fy;

deep[fx]=(-deep[x]+typ-1+deep[y]+3)%3;

return

0;}

下面就談到按秩合併的寫法了。某些情況下時必須要運用按秩合併的方法的,雖然路徑壓縮卸起來更為方便。 按秩合併主要是能解決一類帶撤銷的問題。

void back(int tag) 

}}void push(int u, int v, int val)

fa[u] = v, val[u] = val;

que[++ cnt] = u;

}

簡單並查集

哈爾濱理工大學oj 1160 吸血鬼 description remilia是 東方紅魔館 中首次亮相的吸血鬼角色,是有著500歲年齡的吸血鬼領主。作為紅魔館的主人,有著高貴和威嚴的氣質,不過也經常任性和孩子氣。關於吸血鬼有很多傳說。吸血鬼是乙個血族,有著嚴格的等級。吸血鬼會嚴格聽從血之主人的命令。...

並查集 總結

自己學完後總結一下吧,並查集,我的理解就是乙個查詢與合併,用乙個find函式來查詢自己的祖先也就是根節點,在這過程中還可以進行路徑壓縮,就是讓這個點直接變到根節點之下,還有就是合併,找出這兩個點的根節點,如果根節點不相同的話,就將乙個根節點放到另乙個根節點下面。這道題的就是用並查集做,找出總共有幾個...

並查集總結

用自己的理解來寫好了 有些地方可能不對 不定時更新理解 操作主要為三步 一 初始化 void init 二 查詢 這個為路徑壓縮 就是每次查詢時更新 查詢節點 x 上面所有節點直接使他們連向根節點 每次查詢更新 int find int x 另一種路徑壓縮 不過麻煩了些 作為理解 int find ...