網路交友(並查集問題)

2021-09-26 02:04:32 字數 712 閱讀 6540

在網路社交的過程中,通過朋友,也能認識新的朋友。在某個朋友關係圖中,假定 a 和 b 是朋友,b 和 c 是朋友,那麼 a 和 c 也會成為朋友。即,我們規定朋友的朋友也是朋友。

現在要求你每當有一對新的朋友認識的時候,你需要計算兩人的朋友圈合併以後的大小。

第一行:乙個整數n(n≤5000),表示有 n 對朋友認識。

接下來 n 行:每行輸入兩個名字。表示新認識的兩人的名字,用空格隔開。

(名字是乙個首字母大寫後面全是小寫字母且長度不超過 20 的串)。

對於每一對新認識的朋友,輸出合併以後的朋友圈的大小。

3fred barney

barney betty

betty wilma23

4

#include#includeusing namespace std;

int father[5005];//父親結點,結點數;

int size[5005];//合併以後朋友圈的大小

mapm;

void init(int n)

}int get(int x)

return father[x] = get(father[x]);

}void merge(int a,int b)

if(!m.count(a2))

merge(m[a1],m[a2]);

}return 0;

}

並查集問題

輸入 第一行 城鎮數目n,道路數目m 接下的每一行表示 某條道路連線的城鎮號 輸出 至少還需要建設的道路數目,才能將所有的城鎮連線起來 例子 輸入 3 31 2 1 22 1 輸出 1解釋 要使城鎮123連通,還需要修建23之間的連通路 即還需要修建一條路 cpp實現問題求解 include usi...

並查集 並查集

本文參考了 挑戰程式設計競賽 和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 ...

檢查網路 並查集

題目要求 給定乙個計算機網路以及機器的雙向連線列表,每一條連線允許兩端的計算機進行直接的檔案傳輸,其他計算機間若存在一條連通路徑,也可以進行間接的檔案傳輸,請寫程式判斷,任意指定兩台計算機,它們之間是否可以進行檔案傳輸?輸入要求 輸入由若干組測試資料組成。對於每一組測試資料,第1行包含乙個整數n 1...