未验证 提交 418e876d 编写于 作者: F Filip Hlasek 提交者: GitHub

Fix linter warnings for connected_components_with_dsu. (#992)

上级 426a12da
......@@ -2,19 +2,20 @@
#include <set>
#include <vector>
int N; // denotes number of nodes;
int number_of_nodes; // denotes number of nodes;
std::vector<int> parent;
std::vector<int> siz;
std::vector<int> connected_set_size;
void make_set() { // function the initialize every node as it's own parent
for (int i = 1; i <= N; i++) {
for (int i = 1; i <= number_of_nodes; i++) {
parent[i] = i;
siz[i] = 1;
connected_set_size[i] = 1;
}
}
// To find the component where following node belongs to
int find_set(int v) {
if (v == parent[v])
if (v == parent[v]) {
return v;
}
return parent[v] = find_set(parent[v]);
}
......@@ -22,30 +23,31 @@ void union_sets(int a, int b) { // To join 2 components to belong to one
a = find_set(a);
b = find_set(b);
if (a != b) {
if (siz[a] < siz[b])
if (connected_set_size[a] < connected_set_size[b]) {
std::swap(a, b);
}
parent[b] = a;
siz[a] += siz[b];
connected_set_size[a] += connected_set_size[b];
}
}
int no_of_connected_components() { // To find total no of connected components
std::set<int> temp; // temp set to count number of connected components
for (int i = 1; i <= N; i++) temp.insert(find_set(i));
for (int i = 1; i <= number_of_nodes; i++) temp.insert(find_set(i));
return temp.size();
}
// All critical/corner cases have been taken care of.
// Input your required values: (not hardcoded)
int main() {
std::cin >> N;
parent.resize(N + 1);
siz.resize(N + 1);
std::cin >> number_of_nodes;
parent.resize(number_of_nodes + 1);
connected_set_size.resize(number_of_nodes + 1);
make_set();
int edges;
int edges = 0;
std::cin >> edges; // no of edges in the graph
while (edges--) {
int node_a, node_b;
int node_a = 0, node_b = 0;
std::cin >> node_a >> node_b;
union_sets(node_a, node_b);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册