7 90 社交集群 30分 詳解

2021-10-02 00:25:19 字數 1073 閱讀 5337

當你在社交網路平台註冊時,一般總是被要求填寫你的個人興趣愛好,以便找到具有相同興趣愛好的潛在的朋友。乙個「社交集群」是指部分興趣愛好相同的人的集合。你需要找出所有的社交集群。

輸出格式:

首先在一行中輸出不同的社交集群的個數。隨後第二行按非增序輸出每個集群中的人數。數字間以乙個空格分隔,行末不得有多餘空格。

輸入樣例:

83: 2 7 10

1: 4

2: 5 3

1: 4

1: 3

1: 4

4: 6 8 1 5

1: 4

輸出樣例:

34 3 1

思路

開始把問題想複雜了。其實直接可以:每乙個人用第乙個興趣編號作為代表,將乙個人的興趣編號用並查集和並起來,這樣有相同興趣的人就被分在了乙個組,然後遍歷每乙個人,查詢他的興趣的父親節點,然後用乙個計數陣列技術便可以得到每個圈子有多少人,不為零的個數就是圈子個數。

#includeusing namespace std;

int p[1009], user[1009], hobby[1009];

int find(int x)

return p[x] = find(p[x]);

}void merge(int x, int y)

}bool cmp(int x, int y)

int main()

int n,k,h,num=0;

char ch;

cin >> n;

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

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

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

sort(hobby, hobby+1001, cmp);

cout << num << endl;

for(int i=0; i

return 0;

}

PTA 社交集群 (30 分)

當你在社交網路平台註冊時,一般總是被要求填寫你的個人興趣愛好,以便找到具有相同興趣愛好的潛在的朋友。乙個 社交集群 是指部分興趣愛好相同的人的集合。你需要找出所有的社交集群。輸入格式 輸入在第一行給出乙個正整數 n 1000 為社交網路平台註冊的所有使用者的人數。於是這些人從 1 到 n 編號。隨後...

7 2 社交集群 (30 分

當你在社交網路平台註冊時,一般總是被要求填寫你的個人興趣愛好,以便找到具有相同興趣愛好的潛在的朋友。乙個 社交集群 是指部分興趣愛好相同的人的集合。你需要找出所有的社交集群。輸入在第一行給出乙個正整數 n 1000 為社交網路平台註冊的所有使用者的人數。於是這些人從 1 到 n 編號。隨後 n 行,...

L3 003 社交集群 (30 分)

當你在社交網路平台註冊時,一般總是被要求填寫你的個人興趣愛好,以便找到具有相同興趣愛好的潛在的朋友。乙個 社交集群 是指部分興趣愛好相同的人的集合。你需要找出所有的社交集群。輸入在第一行給出乙個正整數 n 1000 為社交網路平台註冊的所有使用者的人數。於是這些人從 1 到 n 編號。隨後 n 行,...