並查集例題

2021-10-08 11:48:49 字數 1063 閱讀 9881

題目描述

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

輸入

輸入包含多個測試用例,每個測試用例的第一行包含兩個正整數 n、m,1 < = n,m< =100000。接下來有m行,每行分別輸入兩個人的編號f,t(1 < = f,t < = n),表示f和t是好友。 當n為0時,輸入結束,該用例不被處理。

輸出

對應每個測試用例,輸出在這n個人裡一共有多少個朋友圈。每組一行。

樣例輸入

531

2234

5331

2132

30

樣例輸出

2

1

提示

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

**實現如下

#include

using

namespace std;

int f[

100005

],n, m,k,sum=0;

void

init()

//先讓每個人都知道自己,將其對應值給自己

}int

getf

(int v)

//遞迴找到最大的朋友

}void

merge1

(int v,

int u)

//合併兩個圈子的函式

}int

main()

for(i=

1;i<=n;i++

)//判斷有幾個團體;

cout

}}

並查集例題

找出根節點,如果只有乙個節點,根節點是自己 作迴圈,如果父節點不是自己,一直迴圈 public int find int x return x public void union int x,int y parent rootx rooty count 並查集自己的理解 剛開始每個節點都是看作單獨的...

並查集的例題

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

並查集的簡單例題

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