题意的大体意思就是说有很多的同学信仰是不同的,他们之间是有联系的,求他们一共有多少个信仰。。。就是一个简单的并查集、、求根节点的个数。。。。
直接上代码,比较水啊、、、
#include <stdio.h>
int f[100000];
int find(int x)
{
while(x != f[x])
x = f[x];
return x;
}
void rank(int x, int y)
{
int x1, y1;
x1 = find(x);
y1 = find(y);
if(x1 != y1)
f[x1] = y1;
}
int main()
{
int n, m, i, t, count, x, y;
t = 1;
while(~scanf("%d %d",&n, &m) && (n || m))
{
count = 0;
for(i = 1; i <= n; i++)
f[i] = i;
for(i = 0; i < m; i++)
{
scanf("%d %d",&x, &y);
rank(x, y);
}
for(i = 1; i <= n; i++)
if(f[i] == i)
count++;
printf("Case %d: ",t++);
printf("%d\n",count);
}
return 0;
}