並查集 之 2832 6個朋友

2021-08-28 01:22:03 字數 1343 閱讀 7219

時間限制: 1 s    空間限制: 128000 k   題目等級 : ** gold

題解

題目描述 description

有這麼一種說法:認識6個人,你就認識全世界的人。

aiden現在有一張關係圖,上面記載了n個人之間相互認識的情況。aiden想知道,他能否只認識6個人就能間接認識這n個人呢?

輸入描述 input description

第一行,兩個數n,m,表示有n個人,m對認識關係。

接下來的m行,每行兩個數ai,bi,表示ai與bi相互認識。

不保證認識關係不出現重複,保證ai≠bi。

n個人的編號為1...n。

輸出描述 output description

若只認識6個人就能間接認識這n個人,則輸出「^_^」

若不行,則第一行輸出「t_t」,第二行輸出認識6個人最多能間接認識的人的個數。

輸出不包括引號。

樣例輸入 sample input

6 7

1 21 3

2 43 5

4 65 6

3 2

樣例輸出 sample output

資料範圍及提示 data size & hint

對於30%的資料,保證0<n≤1000。

對於50%的資料,保證0<n≤5000。

對於100%的資料,保證0<n≤10000,m≤10*n。

#include#includeusing namespace std;

const int n=100000+5;

long long n,m,sign[n];

long long record[n*10],ans=0,jj=0;

//查詢父節點

long long find(long long x)

int main()

}//record[find(i)] 是最終父節點的記錄 如果等於 0 說明之前還沒有出現過這麼乙個現在就此記錄

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

record[find(i)]++;

}if (jj<=6)

sort(record+1,record+n+1);

for(long long i=n;i>n-6;i--)

cout<<"t_t"

}

並查集 好朋友

天勤書上一道題,很簡潔的展現了並查集的思想。大致意思是x和y是和朋友,xx和yy是好朋友.要你分組使組內都是好朋友,組外都不是好朋友。資料量比較小,很水,路徑壓縮不考慮也沒問題。includeusing namespace std define max 200 int father max bool...

PAT 朋友圈(並查集)

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

5 9 朋友圈 (並查集)

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