func_code_string: #include <bits/stdc++.h>   using namespace std;   int a[1000 + 3][1000 + 3];   int used[1000 + 3][1000 + 3];   int n;   void dfs(int x, int y) {     used[x][y] = 1;     for (int i = 0; i <= 1001; i++) {       if (!used[x][i] && a[x][i]) dfs(x, i);     }     for (int i = 0; i <= 1001; i++) {       if (!used[i][y] && a[i][y]) dfs(i, y);     }   }   int main() {     cin >> n;     int tmp1, tmp2;     for (int i = 0; i < n; i++) {       cin >> tmp1 >> tmp2;       a[tmp1][tmp2] = 1;     }     int ans = 0;     for (int i = 0; i <= 1001; i++) {       for (int j = 0; j <= 1001; j++) {         if (a[i][j] && !used[i][j]) {           dfs(i, j);           ans++;         }       }     }     cout << --ans;     return 0;   }   