n个强盗,m表示警方的线索,接下来m行,每行两个整数a,b表示a强盗和b强盗是同伙,问一共有多少个团伙
样例输入:
10 9
1 2
3 4
5 2
4 6
2 6
8 7
9 7
1 6
2 4
样例输出:
3
程序代码:
#include<stdio.h>
int getf(int v);
void merge(int u,int v);
int f[110];
int main()
{
int i,n,m,x,y,sum=0;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
f[i]=i;
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
merge(x,y);
}
for(i=1;i<=n;i++)
if(f[i]==i)
sum++;
printf("%d\n",sum);
return 0;
}
int getf(int v)
{
if(v==f[v])
return v;
f[v]=getf(f[v]);
return f[v];
}
void merge(int u,int v)
{
u=getf(u);
v=getf(v);
if(u!=v)
f[v]=u;
return;
}