Number of Operations to Make Network Connected LeetCode solution in C++
1class Solution {2public:3// Union Find Approach45vector<int> root;67int find(int node) {8if (root[node] != node) {9return find(root[node]);10}11return node;12}1314int makeConnected(int n, vector<vector<int>> &connections) {15int m = connections.size();1617if (m < n - 1) {18return -1;19}2021for (int i = 0; i < n; i++) {22root.push_back(i);23}2425for (int i = 0; i < m; i++) {26int v1 = connections[i][0];27int v2 = connections[i][1];2829int r1 = find(v1);30int r2 = find(v2);3132if (r1 != r2) {33root[r1] = r2;34}35}3637int ans = 0;38for (int i = 0; i < n; i++) {39if (root[i] == i) {40ans++;41}42}4344return ans - 1;45}46};