#include<stdio.h> #include<string.h> #include<stdlib.h> int set[1010]; int n,m; struct val { int x,y; }e[1000000]; int find(int a) { return a==set[a] ? a : find(set[a]); } int main() { int x,y; while(scanf("%d%d",&n,&m),n) { for(int i=1;i<=n;i++) { set[i]=i; } for(int i=1;i<=m;i++) { scanf("%d%d",&x,&y); e[i].x=x,e[i].y=y; } int f=0; for(int i=1;i<=m;i++) { int x=e[i].x,y=e[i].y; int a=find(x),b=find(y); if(a!=b) { set[a]=b; f++; } } printf("%d\n",n-f-1); } //system("pause"); return 0; }