洛谷p1525 並查集

2021-10-07 23:10:35 字數 849 閱讀 3355

先將最大的犯罪都找出來然後將人員分組;假設兩人x,y;

如果x 前面已經有過敵人了 那就將y合併到x的敵人裡去

y也是如此若有 將x合併到y的敵人去

如果x 和 y前面都沒有

那麼互相將彼此設為敵人

直到找到矛盾的 就是 xy有同乙個敵人;

#include

#include

#include

using

namespace std;

int b[

20005

],father[

20005];

struct nodea[

100005];

bool

cmp(node a,node b)

intget

(int x)

inthb

(int x,

int y)

}int

main()

for(

int i =

1; i <= n; i++

)sort

(a +

1,a + m +

1,cmp)

;for

(int i =

1; i <= m +

1; i++

)else

}return0;

}

並查集 洛谷P1525 關押罪犯

我以前學的是假的並查集 這個題目有很明顯的歸屬關係,可一用並查集搞一搞 普遍來說有兩種方法 1.權值並查集 2.拆點並查集 我們乙個乙個來 當然他們的共同條件就是要先把邊按權值遞減排序,不斷加入,直到無法避免矛盾,那麼直接輸出答案 權值並查集 這個很難解釋啊 我們定義如果x,y相連,那麼代表他們在不...

洛谷P1525 帶權值並查集

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

洛谷P1525 關押罪犯(種類並查集 貪心)

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