並查集的補集 (關押罪犯)

2022-07-14 09:21:11 字數 613 閱讀 7456

定義元素t的逆為t,t一定不在包含t的集合裡

因為對於兩個需要分配在不同集合的元素a、b,我們並不知道具體該怎麼分,所以就令元素a和b在一起,元素b和a在一起。

避免了直接分配a,b到哪乙個集合的問題!!!

自己模擬最快明白

例題:關押罪犯2023年noip全國聯賽提高組

#include using

namespace

std;

const

int max = 100000 + 10

;int

i,j,n,m,x,y;

intf[max];

struct

angry

ang[max];

bool

com(angry a,angry b)

int getf(int

t)int

main()

f[x] = getf( ang[i].p2 + n);//

間接分配集合

f[y] = getf( ang[i].p1 +n);

}printf("0

");//

注意特殊情況

return0;

}

並查集 關押罪犯

題目描述 s城現有兩座監獄,一共關押著n名罪犯,編號分別為1 n。他們之間的關係自然也極不和諧。很多罪犯之間甚至積怨已久,如果客觀條件具備則隨時可能爆發衝突。我們用 怨氣值 乙個正整數值 來表示某兩名罪犯之間的仇恨程度,怨氣值越大,則這兩名罪犯之間的積怨越多。如果兩名怨氣值為c的罪犯被關押在同一監獄...

NOIP 關押罪犯(並查集)

時間限制 1 sec 記憶體限制 128 mb 提交 94 解決 32 提交 狀態 討論版 命題人 admin s城現有兩座監獄,一共關押著n名罪犯,編號分別為1 n。他們之間的關係自然也極不和諧。很多罪犯之間甚至積怨已久,如果客觀條件具備則隨時可能爆發衝突。我們用 怨氣值 乙個正整數值 來表示某兩...

關押罪犯 並查集 二分

s 城現有兩座監獄,一共關押著n 名罪犯,編號分別為1 n。他們之間的關係自然也極不和諧。很多罪犯之間甚至積怨已久,如果客觀條件具備則隨時可能爆發衝突。我們用 怨氣值 乙個正整數值 來表示某兩名罪犯之間的仇恨程度,怨氣值越大,則這兩名罪犯之間的積怨越多。如果兩名怨氣值為c 的罪犯被關押在同一監獄,他...