嚴重急性呼吸系統綜合症(sars)是一種**不明的非典型肺炎,在2023年3月中旬被確認為全球威脅。為了儘量減少傳染給他人,最好的策略是把嫌疑犯和其他人分開。在非傳播疾病大學(nsysu)中,有許多學生團體。同組的學生經常互相交流,乙個人可能會加入多個組。為防止sars可能傳播,nsysu收集所有學生群體的成員名單,並在其標準操作過程中制定以下規則。(sop)。集團中的乙個成員是乙個嫌疑人,集團中的所有成員都是嫌疑人。然而,他們發現,當學生被認定為嫌疑人時,不容易識別所有的嫌疑人。你的工作是寫乙個程式找出所有嫌疑人。
input
輸入檔案包含幾種情況。每個測試用例從一行中的兩個整數n和m開始,其中n是學生的數目,m是組的數目。你可以假設0題意描述:現在有一種傳染性很強的病,為了防止疾病的傳播需要找到感染者或有感染嫌疑的人,一群人被分為多組,一組中如果有乙個嫌疑人即認為一組人都為嫌疑人,現在確定的只有0號為嫌疑人,給出人數n和,m條線索,每條線索的第乙個數代表改組的人數,乙個人可以加入不同的分組,找出嫌疑人的總數量;
解題思路:先用並查集的方法將所有的人都連線到一塊,每個組的人都有相同的boss;再找到到所有與0的boss相同的即是嫌疑人,不能用上一級直接比較,因為它能可能不是直屬於boss的;因此無法比較。
#includeint a[51005],m,n;
void init(int n)
int getf(int v)
}void merge(int x,int y)
int main()
} x=getf(0);
for(i=0;i<=n;i++)
printf("%d\n",sum);
} return 0;
}
並查集 並查集
本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...
並查集入門(普通並查集 帶刪除並查集 關係並查集)
什麼是並查集?通俗易懂的並查集詳解 普通並查集 基礎並查集 例題 題解 how many tables problem description lh boy無聊的時候很喜歡數螞蟻,而且,還給每乙隻小螞蟻編號,通過他長期的觀察和記錄,發現編號為i的螞蟻會和編號為j的螞蟻在一起。現在問題來了,他現在只有...
並查集,帶權並查集
題意 ignatius過生日,客人來到,他想知道他需要準備多少張桌子。然而一張桌子上面只能坐上相互熟悉的人,其中熟悉可定義成為a與b認識,b與c認識,我們就說a,b,c相互熟悉 例如a與b熟悉and b與c熟悉,d與e熟悉,此時至少需要兩張桌子。輸入 t表示樣例個數,n表示朋友個數,朋友從1到n編號...