犯罪集團 並查集

2021-10-09 03:16:08 字數 1100 閱讀 9891

題解警察抓販毒集團。有不同型別的犯罪集團,人員可能重複,集團內的人會相互接觸。現在警察在其中一人(0號)身上搜出毒品,認為與這個人直接接觸或通過其他人有間接接觸的人都是嫌疑犯。問包括0號犯人共有多少嫌疑犯?

多樣例輸入。

每個測試用例以兩個整數n和m開頭,其中n為人數,m為犯罪集團數。你可以假定0 < n <= 30000和0 <= m <= 500。在所有的情況下,每個人都有自己獨特的整數編號0到n−1, 且0號是公認的嫌疑犯。

接下來m行輸入,每個犯罪集團一行。每一行從乙個整數k開始,它本身表示集團內成員的數量。按照成員的數量,在這個組中有k個整數表示人員。一行中的所有整數都被至少乙個空格隔開。

n = 0且m = 0時輸入結束。

對於每個樣例,輸出嫌疑犯人數。

樣例輸入

100 4

2 1 2

5 10 13 11 12 14

2 0 1

2 99 2

200 2

1 55 1 2 3 4 5

1 00 0

樣例輸出41

1思路1. 首先要注意多組輸入

2. 然後我們就可以想到將有相同人的集團合成乙個更大的集團

3. 最後輸出包含0的集團

至於如何計算第二步,非常簡單

初始化根節點和人數分別為自己和1

fa[i] = i, sum[i] = 1;

找到根節點不同的又在同乙個集團的人

同化根節點,嫌疑犯人數累加 **

c++

#include

#include

using

namespace std;

#define m 50005

int fa[m]

, n, m;

int sum[m]

;intc(

int x)

voidr(

)}}}

intmain()

return0;

}

the end

打擊犯罪 並查集

有n個人,相互之間有一些關係,從而形成乙個圖,現在要從1 n1 n 1 n 按順序去掉k個人 即去掉1 k1 k 1 k 使最大的子圖的點數 22,求k的最小值 某個地區有n n 1000 個犯罪團夥,當地 按照他們的危險程度由高到低給他們編號為1 n,他們有些團夥之間有直接聯絡,但是任意兩個團夥都...

並查集 打擊犯罪

description 某個地區有n n 1000 個犯罪團夥,當地 按照他們的危險程度由高到低給他們編號為1 n,他們有些團夥之間有直接聯絡,但是任意兩個團夥都可以通過直接或間接的方式聯絡,這樣這裡就形成了乙個龐大的犯罪集團,犯罪集團的危險程度唯一由集團內的犯罪團夥數量確定,而與單個犯罪團夥的危險...

團夥 並查集 團夥 並查集

題目描述 1920年的芝加哥,出現了一群強盜。如果兩個強盜遇上了,那麼他們要麼是朋友,要麼是敵人。而且有一點是肯定的,就是 我朋友的朋友是我的朋友 我敵人的敵人也是我的朋友。兩個強盜是同一團夥的條件是當且僅當他們是朋友。現在給你一些關於強盜們的資訊,問你最多有多少個強盜團夥。輸入輸出格式 輸入格式 ...