#include <algorithm>
#include <functional>
using namespace std;
#define MAX 1001
int n,m,a,b,sum;
int map[MAX];
int find(
int node)
{
if(node==
map[node])
{
return node;
}
else
{
map[node]=
find(map[node]);
return map[node];
}
}
int main()
{
while(scanf(
"%d",&n)!=EOF && n!=
0 && scanf(
"%d",&m)!=
EOF)
{
memset(map,false,
sizeof(map));
for(
int i=
1;i<=n;i++
)
{
map[i]=
i;
}
for(
int i=
0;i<m;i++
)
{
scanf("%d%d",&a,&
b);
map[find(a)]=
find(b);
}
sum=
0;
for(
int i=
1;i<=n;i++
)
{
for(
int j=
1;j<=n;j++
)
{
if(find(i)!=
find(j))
{
sum++
;
map[find(i)]=
find(j);
}
}
}
printf("%d\n",sum);
}
return 0;
}
转载于:https://www.cnblogs.com/eslizn/archive/2012/07/04/2576258.html
相关资源:数据结构—成绩单生成器
转载请注明原文地址: https://win8.8miu.com/read-1480703.html