//并查集的入门题目
#include <stdio.h>
int digit[1000];
int find(int array[],int k)
{
while(array[k]>0)
k = array[k];
return k;
}
int main(int argc, const char * argv[])
{
// insert code here...
int i,k,h,flag=0;
int n,x,y,street;
while(1)
{
scanf("%d%d",&n,&street);
if(n==0)break;
for(i=0;i<=n;i++)
digit[i]=0;
while(street--)
{
scanf("%d%d",&x,&y);
k = find(digit,x);
h = find(digit,y);
if(h != k)
{
digit[k] = h;
flag++;
}
}
printf("%d\n",n-flag-1);
flag = 0;
}
return 0;
}
//并查集的入门题目
#include <stdio.h>
int digit[1000];
int find(int array[],int k)
{
while(array[k]>0)
k = array[k];
return k;
}
int main(int argc, const char * argv[])
{
// insert code here...
int i,k,h,flag=0;
int n,x,y,street;
while(1)
{
scanf("%d%d",&n,&street);
if(n==0)break;
for(i=0;i<=n;i++)
digit[i]=0;
while(street--)
{
scanf("%d%d",&x,&y);
k = find(digit,x);
h = find(digit,y);
if(h != k)
{
digit[k] = h;
flag++;
}
}
printf("%d\n",n-flag-1);
flag = 0;
}
return 0;
}