1 #include <bits/stdc++.h>
2 #define pb push_back
3 #define _for(i,a,b) for(int i = (a);i < (b);i ++)
4 #define INF 0x3f3f3f3f
5 #define sz size()
6
7 using namespace std;
8 typedef long long ll;
9 #define _for(i,a,b) for(int i = (a);i < (b);i ++)
10 const int maxn = 50003;
11 int par[maxn]; //父亲
12 int high[maxn]; //树的高度
13 int n;
14 void init(int n)
15 {
16 _for(i,0,n)
17 {
18 par[i] = i;
19 high[i] = 0;
20 }
21 }
22
23 int find(int x)
24 {
25 return par[x] == x ? x : par[x] = find(par[x]);
26 }
27
28 void unite(int x,int y)
29 {
30 x = find(x);y = find(y);
31 if(x==y) return ;
32 n --;
33 if(high[x]<high[y])
34 par[x] = y;
35 else
36 {
37 par[y] = x;
38 if(high[x]==high[y])
39 high[x] ++;
40 }
41 }
42
43 bool same(int x,int y)
44 {
45 return find(x) == find(y);
46 }
47
48
49 int main()
50 {
51 int T;
52 scanf("%d",&T);
53 while(T--)
54 {
55 int N,M;
56 scanf("%d %d",&N,&M);
57 n = N;
58 init(N+1);
59 while(M--)
60 {
61 int a,b;
62 scanf("%d %d",&a,&b);
63 unite(a,b);
64 }
65 cout << n <<endl;
66 }
67 return 0;
68 }