https://www.jisuanke.com/problem/T1260宗教信仰(并查集)
作者:
4733
,
2023-01-09 14:29:54
,
所有人可见
,
阅读 204
#include <iostream>
int fa[51000];
using namespace std;
void init(int n)
{
for(int i=1;i<=n;i++)
{
fa[i]=i;
}
}
int find(int i)
{
if(i==fa[i])
return i;
else
{
fa[i]=find(fa[i]);
return fa[i];
}
}
void unionn(int i,int j)
{
int i_fa=find(i);
int j_fa=find(j);
fa[i_fa]=j_fa;
}
int main ()
{
long long int n,m;
long long int p,q;
long long int cnt=0;
long long int count=0;
while(1)
{
cnt=0;
cin>>n>>m;
if(n==0&&m==0)
break;
count++;
init(n);
for(int i=1;i<=m;i++)
{
cin>>p>>q;
unionn(p,q);
}
for(int i=1;i<=n;i++)
{
if(find(i)==i)
{
cnt++;
}
}
cout<<"Case "<<count<<": "<<cnt<<endl;
}
return 0;
}