5 9 朋友圈 (並查集)

2021-07-14 17:19:56 字數 979 閱讀 3875

某學校有n個學生,形成m個俱樂部。每個俱樂部裡的學生有著一定相似的興趣愛好,形成乙個朋友圈。乙個學生可以同時屬於若干個不同的俱樂部。根據「我的朋友的朋友也是我的朋友」這個推論可以得出,如果a和b是朋友,且b和c是朋友,則a和c也是朋友。請編寫程式計算最大朋友圈中有多少人。

輸入的第一行包含兩個正整數n(≤\le

≤30000)和m(≤\le

≤1000),分別代表學校的學生總數和俱樂部的個數。後面的m行每行按以下格式給出1個俱樂部的資訊,其中學生從1~n編號:

第i個俱樂部的人數mi(空格)學生1(空格)學生2 … 學生mi

輸出給出乙個整數,表示在最大朋友圈中有多少人。

7 4

3 1 2 3

2 1 4

3 5 6 7

1 6

4
這個題可以利用並查集 把都是朋友的連線在一起~形成一顆樹  之後查詢每乙個編號所在的樹的根即可√

看哪一棵樹得點最多就可以了~

#include #include using namespace std;

int pre[30005];

int sum[30005];

int findx(int x)

k=x;

while(pre[k]!=r)

return r;

}void he(int x,int y)

}int main()

else

}int ans=0;

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

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

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

printf("%d",ans);

return 0;

}

(๑•̀ㅂ•́)و✧ 上面那個迴圈完全可以寫乙個,可以直接sum[findx(i)]++;

PAT 朋友圈(並查集)

某學校有n個學生,形成m個俱樂部。每個俱樂部裡的學生有著一定相似的興趣愛好,形成乙個朋友圈。乙個學生可以同時屬於若干個不同的俱樂部。根據 我的朋友的朋友也是我的朋友 這個推論可以得出,如果a和b是朋友,且b和c是朋友,則a和c也是朋友。請編寫程式計算最大朋友圈中有多少人。輸入的第一行包含兩個正整數n...

朋友圈 簡單並查集

班上有 n 名學生。其中有些人是朋友,有些則不是。他們的友誼具有是傳遞性。如果已知 a 是 b 的朋友,b 是 c 的朋友,那麼我們可以認為 a 也是 c 的朋友。所謂的朋友圈,是指所有朋友的集合。給定乙個 n n 的矩陣 m,表示班級中學生之間的朋友關係。如果mi 1,表示已知第 i 個和 j 個...

PTA朋友圈 並查集

某學校有n個學生,形成m個俱樂部。每個俱樂部裡的學生有著一定相似的興趣愛好,形成乙個朋友圈。乙個學生可以同時屬於若干個不同的俱樂部。根據 我的朋友的朋友也是我的朋友 這個推論可以得出,如果a和b是朋友,且b和c是朋友,則a和c也是朋友。請編寫程式計算最大朋友圈中有多少人。輸入的第一行包含兩個正整數n...