1408050832-hd-畅通工程.cpp

来源:互联网 发布:mac os 10.11 cdr镜像 编辑:程序博客网 时间:2024/06/05 17:28
#include<stdio.h>
int guanxi[1100];
int find(int a)
{
 if(guanxi[a]==a)
     return a;
 else
     return guanxi[a]=find(guanxi[a]);      //寻找关系
}
int lianjie(int a,int b)
{
 int x,y;
 x=find(a);
 y=find(b);       //找连接
    guanxi[x]=y;     //建立于最开始的那个元素的链接
}
int main()
{
 int n,m;
 int a,b;
 int i,j,sum;
 while(scanf("%d",&n),n)
 {
  scanf("%d",&m);
  for(i=0;i<=1000;i++)
      guanxi[i]=i;         讲所有元素初始化为只跟自己有关系
  for(i=0;i<m;i++)
  {
   scanf("%d%d",&a,&b);
   lianjie(a,b);        找连接
  }
  sum=0;
  for(i=1;i<=n;i++)
      if(guanxi[i]==i)
       sum++;
  printf("%d\n",sum-1);
 }
 return 0;
}
0 0