#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条路
}
转载于:https://www.cnblogs.com/tangcong/archive/2011/04/30/2033320.html