#include<iostream>
#include<algorithm>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<set>
using namespace std;
int f[50005];
int n,m;
int findfa(int x)
{
if(x==f[x])
return x;
int y=findfa(f[x]);
return f[x]=y;
}
void myunion(int x,int y)
{
x=findfa(x);
y=findfa(y);
f[x]=y;
}
void init()
{
for(int i=0;i<=n;i++)
f[i]=i;
}
int main()
{
int k=1;
while(~scanf("%d%d",&n,&m)&&(n||m))
{
set<int> se;
init();
while(m--)
{
int a,b;
scanf("%d%d",&a,&b);
myunion(a,b);
}
printf("Case %d: ",k++);
for(int i=1;i<=n;i++)
{
int t=findfa(i);
se.insert(t);
}
printf("%d\n",se.size());
}
return 0;
}
/*
10 9
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
10 4
2 3
4 5
4 8
5 8
0 0
*/
06-14
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交