323.Number of Connected Components in an Undirected Graph
class Solution {
public:
int countComponents(int n, vector<pair<int, int>>& edges) {
vector<int> root(n);
int res = n;
for(int i = 0; i < n; ++ i){
root[i] = i;
}
for(auto edge : edges) {
int edge1 = find(root,edge.first);
int edge2 = find(root,edge.second);
if(edge1 != edge2){
res--;
root[edge2] = edge1;
}
}
return res;
}
int find(vector<int> root, int i) {
while(i != root[i]) {
root[i] = root[root[i]];
i = root[i];
}
return i;
}
};