题目:
分析:在模板代码上进行修改,因为遇到-1就是新的集合。
不多说了。
代码:
#include<bits/stdc++.h>
using namespace std;
int A[5005];
int ans=0;
int f(int x)
{
if(A[x]==-1)
{
A[x]=x;
ans++;
return x;
}
if(A[x]==x) return x;
return A[x]=f(A[x]);
}
int main()
{
memset(A,-1,sizeof(A));
int a1,a2,a3;
while(1)
{
cin>>a1;if(a1!=0) cin>>a2;else return 0;
for(int i=0;i<a2;i++)
{
int c1,c2;
cin>>c1>>c2;
int c3=f(c1);
int c4=f(c2);
if(c3==c4) continue;
A[c3]=c4;
ans--;
}
for(int i=1;i<=a1;i++) if(A[i]==-1) ans++;
cout<<ans-1<<endl;
memset(A,-1,sizeof(A));
ans=0;
}
}