大佬看看有什么问题,求求了
#include<bits/stdc++.h>
using namespace std;
int fa[10010];
int g (int x)
{
if (fa[x]==x)
{
return x;
}
return fa[x]=g(fa[x]);
}
void merge (int x,int y)
{
x=g(x);
y=g(y);
if (x!=y)
{
fa[y]=x;
}
}
int main(){
int n,m;
cin >> n >> m;
for (int i=1;i<=n;i++)
{
fa[i]=i;
}
for (int i=0;i<m;i++)
{
int x,y;
cin >> x >> y;
merge(x,y);
}
int ans=-1;
for (int i=1;i<=n;i++)
{
if (fa[i]==i)
{
ans++;
}
}
cout << ans;
return 0;
}