在網路社交的過程中,通過朋友,也能認識新的朋友。在某個朋友關係圖中,假定 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...