#include <bits/stdc++.h>
using namespace std;
int mark[110000];
void dfs(vector<int> graph[],int num){
    mark[num]=1;
    for (int i=0; i<graph[num].size(); i++)
        if (!mark[graph[num][i]]){
            mark[graph[num][i]]=1;
            dfs(graph,graph[num][i]);
        }
}
int main(){
    int t;
    cin>>t;
    while (t--){
        int n,m,count=0;
        cin>>n>>m;
        vector<int> graph[n+1];
        for (int i=0; i<m; i++){
            int p,q;
            cin>>p>>q;
            graph[p].push_back(q);
            graph[q].push_back(p);
        }
        memset(mark,0,sizeof(mark));
        for (int i=1; i<=n; i++){
            if (!mark[i]){
                ++count;
                dfs(graph,i);
            }
        }
        cout<<count-1<<endl;
    }
    return 0;
}