並查集例題

2021-10-19 10:19:16 字數 607 閱讀 1135

}//找出根節點,如果只有乙個節點,根節點是自己

//作迴圈,如果父節點不是自己,一直迴圈

public int find(int x)

return x;

}public void union(int x, int y)

parent[rootx] = rooty;

count--;}}

}並查集自己的理解 剛開始每個節點都是看作單獨的集合,現在要合併一些節點,如果合併的兩個節點的父節點相同,說明已經是在乙個集合中了,否則之前就不在乙個集合中,將這兩個節點的父節點相連,組成乙個集合,此時集合數減一。

並查集例題

題目描述 假如已知有n個人和m對好友關係 存於集合r 如果兩個人是直接或間接的好友 好友的好友的好友 則認為他們屬於同乙個朋友圈。請寫程式求出這n個人裡一共有多少個朋友圈。輸入 輸入包含多個測試用例,每個測試用例的第一行包含兩個正整數 n m,1 n,m 100000。接下來有m行,每行分別輸入兩個...

並查集的例題

題意為 已知學校有n個學生 想知道有多少個宗教,但是不能乙個乙個問學生 已知兩個一起的是乙個宗教的,現可以問m對學生,請求出最多有多少個宗教 輸入資料 10 4 2 3 4 5 4 8 5 8 答案為7 由題知採用並查集求解 可看做二叉樹 include using namespace std co...

並查集的簡單例題

並查集是一種樹型的資料結構,用於處理一些不相交集合 disjoint sets 的合併及查詢問題。操作步驟 1.初始化 把每個節點初始化為自身。即自身為自身的根節點 2.查詢 查詢元素所在的集合。即根節點 3.合併 將兩個元素所在的集合並成同乙個集合。即連線根節點 簡單例題 此題主要難點在於判斷是否...