種類並查集

2022-07-27 14:57:31 字數 1152 閱讀 5312

一般的並查集是維護屬於同一種類的元素,對於屬於不同種類的元素之間的關係沒有記錄。種類並查集就是同一集合中的元素是已經確定關係的(是否屬於同一種類),然後加乙個group陣列,記錄一下孩子和父親是否屬於同一種類,遞推稍稍改一下就可以了。

poj1703:

題目大意:有n個罪犯,兩個幫派,已知其中若干對兩者屬於不同幫派,求給定的罪犯是否屬於同一幫派。

需要注意,給的兩個罪犯可能已經在同乙個集合裡了,需要處理一下,不然就無限遞迴了。。。

分析:記前k個的和的奇偶性為f[k],若[a,b]和為偶數,則f[a]==f[b],否則f[a]!=f[b],然後用種類並查集維護一下就可以了。

1 #include2 #include

3using

namespace

std;

4const

int maxn=100005;5

intp[maxn],group[maxn],n,q;

6int find(int

x)13

intmain()

16int a,b,ans=-1;17

char s[10

];18

for(int i=0;i)

28 }else35}

36}37 cout

38return0;

39 }

種類並查集

先來經典題目poj 1182 其實我現在都不是很明白這個題是怎麼做的 這道題貌似是並查集和向量做的,其中的關係推斷現在不是很明白。只知道和根節點的關係有三種,一種是同類 rank x 0 一種是被根節點吃掉 rank x 1 一種是吃掉根基點 rank x 2 如果不是很明白這道題的話可以跳過這道題...

種類並查集

食物鏈 poj 1182 動物王國中有三類動物a,b,c,這三類動物的食物鏈構成了有趣的環形。a吃b,b吃c,c吃a。現有n個動物,以1 n編號。每個動物都是a,b,c中的一種,但是我們並不知道它到底是哪一種。有人用兩種說法對這n個動物所構成的食物鏈關係進行描述 第一種說法是 1 x y 表示x和y...

種類並查集

種類並查集是我自己分的類,下面是幾道相關的題,都要求分類。a bug s life 核心思想 不難發現,一旦我們有了兩個bug之間的關係,我們一定可以判斷出它們的性別異同,甚至可以相互推斷,比如 a 與 b 能 b 與 c 能 那麼就能推出 a,c 與 b 性別相反,我們把這三個成為已經建立了關係的...