並查集練習

2021-07-31 23:48:45 字數 540 閱讀 5790

題目描述:

假如已知有n個人和m對好友關係(存於數字r)。如果兩個人是直接或間接的好友(好友的好友的好友…),則認為他們屬於同乙個朋友圈,請寫程式求出這n個人裡一共有多少個朋友圈。

假如:n = 5 , m = 3 , r = , , },表示有5個人,1和2是好友,2和3是好友,4和5是好友,則1、2、3屬於乙個朋友圈,4、5屬於另乙個朋友圈,結果為2個朋友圈。

輸入:

輸入包含多個測試用例,每個測試用例的第一行包含兩個正整數 n、m,1=

#include

#include

#include

int pre[100000];

int find(int x)

void mix(int x,int y)

int main()

for(int i=1;i<=m;i++)

for(int i=1;i<=n;i++)

printf("%d",count);

return

0;}

並查集練習

集合的合併與維護和食物鏈那道題一樣。不過多了個裁判。注意到n 500,所以可以列舉裁判,然後判斷是否出現了矛盾。忽略裁判 如果有矛盾,則這個人不是裁判。唯一有點難度的是輸出第幾行判斷出的裁判。原先以為是最後出現裁判的那一行。後來發現應當時列舉其他人時候首次出現矛盾的最大值。仔細想想 這樣這道題就解決...

並查集 並查集

本文參考了 挑戰程式設計競賽 和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的螞蟻在一起。現在問題來了,他現在只有...