#include<stdio.h>
int father[1002];
#include<string.h>
int find(int c)
{
if(c!=father[c])
{
father[c]=find(father[c]);
}
return father[c];
}
void Union(int a, int b)//合并
{
int x=find(a);
int y=find(b);
if(x!=y)
father[y]=x;
}
int main()
{
int m,n,x,y,i,count;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(father,0,sizeof(father));
for(i=1;i<=n;i++)
{
father[i]=i;
}
for(i=0;i<m;i++)
{
scanf("%d%d",&x,&y);
Union(x,y);
}
for(i=1;i<n;i++)
if(father[i]==i)
count++;
printf("%d\n",count-1);
}
}
、
输出对了,但是提交后还是错误的?、
你错在让大家都不知道你错在哪里,问题描述得太模糊了,只有代码,搞不懂你想要得到什么样的结果,出了什么样的错误,没法解决。