func_code_string: #include <bits/stdc++.h>   using namespace std;   struct node {     int x, y;   } p[111];   int g[1111][1111];   int vis[1111];   int n;   void dfs(int u) {     vis[u] = 1;     int i;     for (i = 0; i < n; i++) {       if (g[u][i] && !vis[i]) {         dfs(i);       }     }   }   int main() {     cin >> n;     int i, j;     memset(g, 0, sizeof(g));     for (i = 0; i < n; i++) {       cin >> p[i].x >> p[i].y;     }     int ans = 0;     for (i = 0; i < n; i++) {       for (j = i + 1; j < n; j++) {         if (p[i].x == p[j].x || p[i].y == p[j].y) {           g[i][j] = g[j][i] = 1;         }       }     }     for (i = 0; i < n; i++) {       if (!vis[i]) {         dfs(i);         ans++;       }     }     cout << ans - 1 << endl;     return 0;   }   