//将每个元素看为一个集合,然后通过并查集合并集合,然后再将余下的集合连接起来即可
#include<iostream>
#include<vector>
using namespace std;
int main(){
int n,m;
while(cin>>n>>m){
int t=n;
vector<int> v(n+1,-1);
while(m--){
int x,y;
cin>>x>>y;
int a=x,b=y;
while(v[a]!=-1)a=v[a];//找代表元素
while(v[b]!=-1)b=v[b];
if(a==b)continue;
else v[b]=x,t-=1;//合并集合
}
v.clear();
cout<<t-1<<endl;
}
}
京公网安备 11010502036488号