時間限制: 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樣例輸出 sample output 資料範圍及提示 data size & hint1 21 3
2 43 5
4 65 6
3 2
對於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...