func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 512, M = 20000 + 10;   struct Stage {     int p[N];   } stage[N * 2];   struct Edge {     int u, v;     void init() { scanf( %d%d , &u, &v); }   } edge[M];   int preStg[M], postStg[M], nstg;   int p[N], num[N];   int n, m;   int findr(int x, int* P) {     int r = x;     while (P[r]) r = P[r];     while (P[x]) {       int t = P[x];       P[x] = r;       x = t;     }     return r;   }   void join(int x, int y, int* P) {     int r1 = findr(x, P);     int r2 = findr(y, P);     if (r1 == r2) return;     if (num[r1] > num[r2]) {       num[r1] += num[r2];       P[r2] = r1;     } else {       num[r2] += num[r1];       P[r1] = r2;     }   }   int l, r;   int solve() {     Stage st1 = stage[preStg[l]];     Stage st2 = stage[postStg[r]];     memset(num, 0, sizeof(num));     for (int i = 1; i <= n; ++i) {       join(i, st2.p[i], st1.p);     }     int sum = 0;     for (int i = 1; i <= n; ++i) {       sum += (findr(i, st1.p) == i);     }     return sum;   }   int main() {     scanf( %d%d , &n, &m);     for (int i = 1; i <= m; ++i) {       edge[i].init();     }     memset(p, 0, sizeof(p));     memset(num, 0, sizeof(num));     for (int i = 1; i <= n; ++i) {       stage[nstg].p[i] = p[i];     }     nstg++;     for (int i = 1; i <= m; ++i) {       preStg[i] = nstg - 1;       if (findr(edge[i].u, p) != findr(edge[i].v, p)) {         join(edge[i].u, edge[i].v, p);         for (int j = 1; j <= n; ++j) {           stage[nstg].p[j] = p[j];         }         nstg++;       }     }     memset(p, 0, sizeof(p));     memset(num, 0, sizeof(num));     for (int i = 1; i <= n; ++i) {       stage[nstg].p[i] = p[i];     }     nstg++;     for (int i = m; i >= 1; --i) {       postStg[i] = nstg - 1;       if (findr(edge[i].u, p) != findr(edge[i].v, p)) {         join(edge[i].u, edge[i].v, p);         for (int j = 1; j <= n; ++j) {           stage[nstg].p[j] = p[j];         }         nstg++;       }     }     int q;     scanf( %d , &q);     while (q--) {       scanf( %d %d , &l, &r);       printf( %d n , solve());     }     return 0;   }   