poj1703 經典並查集

2021-07-24 16:59:32 字數 860 閱讀 2507

一道非常經典的並查集,建議還可以做下hdu5971,這樣我感覺一般的並查集就並沒有神馬威脅了。。。

祭奠我為此付出的好幾天時間。。。

懶得加注釋,真的要想搞懂的話建議花時間自己看懂,畢竟ac**已經寫出來了。

但是實在不會的話詳詢**qq1933160466。

2333333333333333333333333333333

兩份**,看懂哪個算哪個。

#include#includeusing namespace std;

const int maxn=2*1e5+5;

int par[maxn];

int n;

int find(int num)

int main()

}else}}

return 0;

}

#include#include#includeusing namespace std;

const int maxn=1e5+5;

int fa[maxn],s[maxn],n;

void init()

int find(int num,int &rel)

sa=find(fa[num],relf);

s[num]=s[num]^relf;

fa[num]=sa;

rel=s[num];

return sa;

}void update(int x,int y)

}void ask(int x,int y)

int main()

else}}

return 0;

}

種類並查集(POJ 1703)

1703 find them,catch them 題目大意 有2個敵對幫派,輸入d a b表示a,b在不同幫派,輸入a a b表示詢問a,b是否是在乙個幫派。題解 因為並查集中的元素均是有聯絡的,否則也不會被合併到當前集合中。那麼我們就把這2個元素之間的關係量轉化為乙個偏移量,假設 x y 偏移量...

種類並查集(POJ1703)

圖學的有點自閉,再加上用到了並查集 模擬棧 搜尋,先補一下這些相對基礎的東西 跟普通並查集區別 1 陣列開兩倍 2 union set a n,b 和union set a,b n 3 判斷 find a find b 同隊 find a find b n 不同隊 不需要再 f a n f b n ...

種類並查集,Poj 1703

第一次做種類並查集,有的地方還不是很清楚,想了一上午,有點明白了,這裡記錄一下。這裡我參考的紅黑聯盟的題解。關鍵 種類並查集與帶權並查集實質上的差別並不大,關鍵的區別就是種類並查集只是帶權並查集再弄個 取餘操作而已,然後餘數就表示他屬於哪個種類。rank陣列表示節點和父節點的關係 也可以理解為他的種...