L3 003 社交集群 並查集

2021-08-17 22:18:31 字數 1409 閱讀 3337

時間限制

1000 ms

記憶體限制

65536 kb

**長度限制

8000 b

判題程式

standard

作者

陳越

在社交網路平台註冊時,使用者通常會輸入自己的興趣愛好,以便找到和自己興趣相投的朋友。有部分興趣相同的人們就形成了「社交集群」。現請你編寫程式,找出所有的集群。

輸入格式:

輸入的第一行給出正整數n(<=1000),即社交網路中的使用者總數(則使用者從1到n編號)。隨後n行,每行按下列格式列出每個人的興趣愛好:

ki: hi[1] hi[2] ... hi[ki]

其中ki(>0)是第i個人的興趣的數量,hi[j]是第i個人的第j項興趣的編號,編號範圍為[1, 1000]內的整數。

輸出格式:

首先在第一行輸出整個網路中集群的數量,然後在第二行按非遞增的順序輸出每個集群中使用者的數量。數字間以1個空格分隔,行首尾不得有多餘空格。

輸入樣例:

8

3: 2 7 10

1: 4

2: 5 3

1: 4

1: 3

1: 4

4: 6 8 1 5

1: 4

輸出樣例:
3

4 3 1

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

code:

#include #include #include #include using namespace std;

const int maxn = 1010;

int pre[maxn];

int user[maxn];

int hobby[maxn];

int n;

void init()

}int find(int x)

void merge(int x,int y)

}bool cmp(int a,int b)

int main()

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

int cnt = 0;

for(int i = 0; i < maxn; i++)

sort(hobby,hobby+maxn,cmp);

printf("%d\n",cnt);

for(int i = 0; i < cnt; i++)

return 0;

}

L3 003 社交集群(並查集)

時間限制 1000 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 在社交網路平台註冊時,使用者通常會輸入自己的興趣愛好,以便找到和自己興趣相投的朋友。有部分興趣相同的人們就形成了 社交集群 現請你編寫程式,找出所有的集群。輸入格式 輸入的第一行給...

天梯賽 L3 003 社交集群 (並查集)

題目鏈結 分析 並查集裸題,把模板背下來的話問題不大 includeusing namespace std const int maxn 1e4 100 define loc int n,k,num1,num2 int father maxn int tem maxn 儲存每個人的第乙個愛好 vec...

L3 003 社交集群

在社交網路平台註冊時,使用者通常會輸入自己的興趣愛好,以便找到和自己興趣相投的朋友。有部分興趣相同的人們就形成了 社交集群 現請你編寫程式,找出所有的集群。輸入格式 輸入的第一行給出正整數n 1000 即社交網路中的使用者總數 則使用者從1到n編號 隨後n行,每行按下列格式列出每個人的興趣愛好 ki...