擒贼先擒王\
描述:
找团伙的个数,如果1和2是团伙,2和3是团伙,那么1和3也是团伙。
输入:
第一行n m,n表示强盗的人数,m表示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 f[1010];
int getf(int t);//找BOSS
int main()
{
int m,n,sum;
int i,a,b,boos1,boos2;
while(scanf("%d%d",&n,&m)!=EOF)
{
sum=0;
for(i=1;i<=n;i++)
f[i]=i;
for(i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
boos1=getf(a);
boos2=getf(b);
if(boos1!=boos2)
f[boos2]=boos1;//靠左原则
}
for(i=1;i<=n;i++)
if(f[i]==i)
sum++;
printf("%d\n",sum);
}
return 0;
}
int getf(int t)
{
if(f[t]==t)
return t;
f[t]=getf(f[t]);
return f[t];
}
\
\