畅通工程 hdu 1223

#include<stdio.h>
int father[1100],N,M;
int find(int x)
{
 return x==father[x]?x:father[x]=find(father[x]);
}
void merge(int x,int y)
{
 x=find(x);
 y=find(y);
 if(x!=y)
 father[x]=y;
}
int main( )
{
  while(scanf("%d%d",&N,&M),N)
  {
   int i,j,a,b,count=1;
   for(i=1;i<=N;i++)
   father[i]=i;
   for(i=0;i<M;i++)
   {
   scanf("%d%d",&a,&b);
   if(find(a)!=find(b))
   {
    merge(a,b);
    count++;      
   }
   }
   printf("%d\n",N-count);
}
return 0;   //N个城镇如果相通至少需要N-1条路
}
   
   
    

posted on 2011-04-30 11:00  more think, more gains  阅读(255)  评论(0编辑  收藏  举报

导航