1217.CD收藏
Description
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<stdlib.h>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#include<cmath>
using namespace std;
int f[10010];
int init(int n)
{
for(int i=1;i<=n;i++)
{
f[i]=i;
}
return 0;
}
int getf(int d)
{
if(f[d]==d)
{
return d;
}
else
{
f[d]=getf(f[d]);
return f[d];
}
}
int merg(int v,int u)
{
int t1,t2;
t1=getf(v);
t2=getf(u);
if(t1!=t2)
{
f[t2]=t1;
}
return 0;
}
int main()
{
int n,m,sum;
int x,y;
while(scanf("%d%d",&n,&m)!=EOF)
{
sum=0;
memset(f,0,sizeof(f));
init(n);
for(int j=0;j<m;j++)
{
scanf("%d%d",&x,&y);
merg(x,y);
}
for(int i=1; i<=n; i++)
{
if(f[i]==i)
sum++;
}
cout<<sum<<endl;
}
return 0;
}