#include <iostream> #include <fstream> #include <vector> using namespace std; void dfs(const vector<vector<bool>>& matrix,int x,vector<bool>& visited ); int main() { ios::sync_with_stdio(false); cin.tie(0); //ifstream fin("C:\\Users\\Administrator\\Desktop\\Code\\c2006b\\fin.txt"); //ofstream fout("C:\\Users\\Administrator\\Desktop\\Code\\c2006b\\fout.txt"); int n,m,x,y,counter; while(cin>>n>>m) { if(n==0) break; counter=0; vector<vector<bool>> matrix(n,vector<bool>(n,false)); vector<bool> visited(n,false); for(int i=0;i<m;++i) { cin>>x>>y; matrix[x-1][y-1]=matrix[y-1][x-1]=true; } for(int i=0;i<n;++i) { if(visited[i]==false) { dfs(matrix,i,visited); ++counter; } } cout<<counter-1<<endl; } // int m,n; // while(fin>>m>>n) // { // for(int i=1;i<=n-2;++i) // { // for(int j=i+1;j<=n-1;++j) // { // for(int k=j+1;k<=n;++k) // { // fout<<i<<" "<<j<<" "<<k<<endl; // } // } // } // } return 0; } void dfs(const vector<vector<bool>>& matrix,int x,vector<bool>& visited ) { int nsize=matrix.size(); visited[x]=true; for(int i=0;i<nsize;++i) { if(matrix[x][i]==true&&visited[i]==false) { dfs(matrix,i,visited); } } }