日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++数据结构——热闹的聚会

發布時間:2024/3/13 c/c++ 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++数据结构——热闹的聚会 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

熱鬧的聚會

今天是小明的生日,他邀請了許多朋友參加聚會,當然,有些朋友之間由于互不認識,因此不愿意坐在同一張桌上,但是如果A認識B,且B認識C,那么A和C就算是認識的。
為了使得聚會更加熱鬧,就應該盡可能少用桌子。那么,最熱鬧(人數最多的)的那一桌一共有多少人嗎?

輸入格式:

首先輸入一個整數T,表示測試數據的組數,然后是T組測試數據。每組測試數據首先輸入2個整數n和m (1≤n , m≤1000)。其中n表示朋友總數,并且編號從1到n;然后輸入m行數據,每行2個整數A和 B (A≠B), 表示朋友A和B相互認識。

輸出格式:

對于每組測試,輸出最熱鬧的那一桌的總人數。

輸入樣例:
3
5 3
1 2
2 3
4 5
5 1
2 5
10 9
7 8
1 5
1 7
1 2
1 3
1 4
2 6
2 9
9 2
輸出樣例:
3
2
9

代碼長度限制 16 KB 時間限制 400 ms 內存限制 64 MB

解題代碼

#include<bits/stdc++.h> using namespace std; int men[1005]; int ans[1005]; int find(int x) {if(men[x]==x){return men[x];} men[x]=find(men[x]);return men[x]; }void Union(int a,int b) //合并 {a = find(a);b = find(b);if(a!=b){men[b]=a;ans[a]+=ans[b];} }int main() {int T,n,m,a,b;cin>>T;while(T--){cin>>n>>m;;for(int i=1;i<=n;i++){men[i]=i;ans[i]=1;}for(int i=0;i<m;i++){cin>>a>>b;Union(a,b);}int maxNum = 0;for(int i=1;i<=n;i++){if(ans[i]>maxNum&&men[i]==i)maxNum=ans[i];}cout<<maxNum<<endl;} }

解題思路
并查集,這里要每次合并的時候,要把一邊的數量存儲到新合并上的一邊,一開始用指針提交pta爆段錯誤,離譜

總結

以上是生活随笔為你收集整理的C++数据结构——热闹的聚会的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。