思路:并查集
第一次用并查集,原先打算把parent 初始化为-1
发现这样统计宗教种类太麻烦
比方便统计
#include "stdio.h"
#define M 50005
int find (int parent[],int v)
{
;
(parent[t] != t)
t = parent[t];
t;
}
int main ()
{
i,n,m,v1,v2,x,y;
1;
(1)
scanf ("%d %d",&n,&m);
if (!n&&!m)
break;
int parent[M];
for (i = 1;i <= n;i ++)
parent[i] = i;
for (i = 0;i < m;i ++)
{
scanf ("%d%d",&v1,&v2);
x = find (parent,v1);
y = find (parent,v2);
if (x != y)
parent[y] = x;
}
int sum = n;
for (i = 1;i <= n;i ++)
if (parent[i] !=
i)
//只要他的宗教跟自己原来的不同,证明他跟别人有相同的宗教
sum --;
printf ("Case %d: %d\n",count++,sum);
0;
}