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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SDNU 1217 CD收藏——并查集

發(fā)布時間:2023/12/9 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SDNU 1217 CD收藏——并查集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

lmh平常愛聽歌,所以買了很多的CD來收藏,但是因為平常整理不當,所以忘記了這些CD的歌手是誰。現在他想知道他到底收藏了多少位歌手的專輯,于是他想了一個辦法,同時拿出兩個CD來聽,可以分辨出來是否為同一個歌手唱的。(如果沒有說明則認為是沒有分辨出來,為不同歌手)現在他列了一個表記錄哪些專輯是同一歌手,但他面對著這一堆記錄不知如何處理,請你告訴他到底他有多少個歌手的專輯。

Input

??? 第一行n,m。n表示CD的個數(標號分別為1到n),m表示lmh所分辨出來的共有幾組。接下來的m行每一行有兩個數a,b。表示a唱片和b唱片是同一個歌手。(1<=n,m<=10000)

Output

??? 總計的歌手數量。

Sample Input

10 9 1 2 3 4 5 2 4 6 2 6 8 7 9 7 1 6 2 4

Sample Output


3

#include <iostream> #include <math.h> #include <algorithm> #include <stdio.h> using namespace std; int find(int x) {return x==f[x]?x:f[x]=find(f[x]); } void merge(int x,int y) {x=find(x),y=find(y);if(x!=y) f[x]=y; } int main() {//freopen("in.txt","r",stdin);int n,m,x,y,ans;cin>>n>>m;for(int i=1;i<=n;i++) f[i]=i;for(int i=1;i<=m;i++){cin>>x>>y;merge(x,y);}for(int i=1;i<=n;i++)if(f[i]==i) ans++;cout<<ans<<endl; }

?

轉載于:https://www.cnblogs.com/fantastic123/p/8933268.html

總結

以上是生活随笔為你收集整理的SDNU 1217 CD收藏——并查集的全部內容,希望文章能夠幫你解決所遇到的問題。

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