新型冠狀病毒肺炎(corona virus disease 2019,covid-19),簡稱「新冠肺炎」,是指2019新型冠狀病毒感染導致的肺炎。
如果乙個感染者走入乙個群體,那麼這個群體需要被隔離!
小a同學被確診為新冠感染,並且沒有戴口罩!!!!!!
危!!!
時間緊迫!!!!
需要盡快找到所有和小a同學直接或者間接接觸過的同學,將他們隔離,防止更大範圍的擴散。
眾所周知,學生的交際可能是分小團體的,一位學生可能同時參與多個小團體內。
請你編寫程式解決!戴口罩!!
【輸入】
多組資料,對於每組測試資料:
第一行為兩個整數n和m(n = m = 0表示輸入結束,不需要處理),n是學生的數量,m是學生群體的數量。0 < n <= 3e4 , 0 <= m <= 5e2
學生編號為0~n-1
小a編號為0
隨後,m行,每行有乙個整數num即小團體人員數量。隨後有num個整數代表這個小團體的學生。
【輸出】
輸出要隔離的人數,每組資料的答案輸出佔一行
【樣例輸入】
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、查詢元素a和元素b是否屬於同一組
2、合併元素a和元素b所在的組
3、將所有元素的父親初始化為自己本身
實現:
合併:把乙個分組的根掛到另乙個分組的根
查詢:不斷查詢乙個節點的祖先,此時進行路徑壓縮,為提高查詢的複雜度,丟棄節點間的關係,把自己直接掛在根節點下。
要找出與小a同學直接或間接接觸的人群,在儲存團隊資訊時,利用並查集將有關係的團隊成員掛在同一集合下。則查詢與小a同乙個父親的同學將其隔離
#include
#include
using
namespace std;
int n,m;
int par[
50010];
intfind
(int x)
void
add(
int x,
int y)
intmain()
}int fa=
find(0
);int cont=1;
for(
int j=
1;j) cout<}}
c 並查集模板題 戴好口罩
新型冠狀病毒肺炎 corona virus disease 2019,covid 19 簡稱 新冠肺炎 是指2019新型冠狀病毒感染導致的肺炎。如果乙個感染者走入乙個群體,那麼這個群體需要被隔離!小a同學被確診為新冠感染,並且沒有戴口罩!危!時間緊迫!需要盡快找到所有和小a同學直接或者間接接觸過的同...
WEEK6 周記 作業 並查集 戴好口罩
新型冠狀病毒肺炎 corona virus disease 2019,covid 19 簡稱 新冠肺炎 是指2019新型冠狀病毒感染導致的肺炎。如果乙個感染者走入乙個群體,那麼這個群體需要被隔離!小a同學被確診為新冠感染,並且沒有戴口罩!危!時間緊迫!需要盡快找到所有和小a同學直接或者間接接觸過的同...
week6 戴好口罩! 並查集的基本應用
分析總結 大家出門還是要戴好口罩噢?新型冠狀病毒肺炎 corona virus disease 2019,covid 19 簡稱 新冠肺炎 是指2019新型冠狀病毒感染導致的肺炎。如果乙個感染者走入乙個群體,那麼這個群體需要被隔離!小a同學被確診為新冠感染,並且沒有戴口罩!危!時間緊迫!需要盡快找到...