L3 003 社交集群 30分

2021-10-18 14:37:58 字數 1191 閱讀 1261

原題鏈結

並查集要想明白 合併的是什麼是通過什麼合併的

合併的是人的編號 通過是否喜歡同乙個活動x進行判斷

1、int course[x]; //喜歡活動x的人的編號如果這個活動沒人喜歡過就要設定course[x] = i;喜歡過的話就合併

2、findfather(course[x])喜歡活動x的人所在的社交圈子的根結點,需要與當前編號i進行合併。

#include

#include

#include

#include

using

namespace std;

//const int maxn = 100010;

const

int maxn =

1010

;int isroot[maxn]

;//用於記錄團體個數

int father[maxn]

;int enemy[maxn]

[maxn]

;int course[maxn]

;//喜歡活動x的人的編號

bool

cmp(

int a,

int b)

intfindfather

(int x)

void

union

(int a,

int b)

int cont =0;

intmain()

int n;

cin >> n;

for(

int i =

1; i <= n;

++i)

union

(findfather

(course[x]

),i);}

}for

(int i =

1; i <= n; i++

)sort

(isroot+

1,isroot+

1+n,cmp)

;for

(int i =

1; i <= n; i++

) cout << cont << endl;

for(

int i =

1; i <= cont; i++

)return0;

}

L3 003 社交集群 (30 分)

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

L3 003 社交集群 30分

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

L3 003 社交集群 30 分

include using namespace std int vis 1010 vector int table 1010 每個人對應的興趣 vector int val person 1010 每個興趣對應的人 bool cmp int a,int b void gethorde int peo...