先將最大的犯罪都找出來然後將人員分組;假設兩人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 的罪犯被關押在同一監獄,他們...