From 6392099cab71da02f8cf3a525d33c1c2c276a9c3 Mon Sep 17 00:00:00 2001 From: Ayaan Khan Date: Mon, 18 May 2020 16:14:51 +0530 Subject: [PATCH 1/5] Connected Components using DFS --- graph/connected_components.cpp | 61 ++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 graph/connected_components.cpp diff --git a/graph/connected_components.cpp b/graph/connected_components.cpp new file mode 100644 index 000000000..4df4fb7c6 --- /dev/null +++ b/graph/connected_components.cpp @@ -0,0 +1,61 @@ +#include +#include + +using namespace std; + +class graph +{ + private: + vector> adj; + int cc; + void dfs(); + void explore(int, vector&); + public: + graph(int n): adj(n,vector()), cc(0) {} + void addEdge(int,int); + int getConnectedComponents() + { + dfs(); + return cc; + } +}; + +void graph::addEdge(int u, int v) +{ + adj[u-1].push_back(v-1); + adj[v-1].push_back(u-1); +} + +void graph::dfs() +{ + int n = adj.size(); + vector visited(n,false); + + for(int i = 0;i &visited) +{ + visited[u] = true; + for(auto v : adj[u]) + { + if(!visited[v]) + explore(v,visited); + } +} + +int main() +{ + graph g(4); + g.addEdge(1,2); + g.addEdge(3,2); + cout< Date: Mon, 18 May 2020 16:48:26 +0530 Subject: [PATCH 2/5] cpplint fixing --- graph/connected_components.cpp | 60 +++++++++++++++------------------- 1 file changed, 27 insertions(+), 33 deletions(-) diff --git a/graph/connected_components.cpp b/graph/connected_components.cpp index 4df4fb7c6..c3acad635 100644 --- a/graph/connected_components.cpp +++ b/graph/connected_components.cpp @@ -1,61 +1,55 @@ #include #include -using namespace std; +using std::vector; -class graph -{ +class graph { private: - vector> adj; - int cc; - void dfs(); - void explore(int, vector&); + vector> adj; + int connected_components; + void depth_first_search(); + void explore(int, vector&); public: - graph(int n): adj(n,vector()), cc(0) {} - void addEdge(int,int); - int getConnectedComponents() - { - dfs(); - return cc; + graph(int n): adj(n, vector()) { + connected_components = 0; + } + void addEdge(int, int); + int getConnectedComponents() { + depth_first_search(); + return connected_components; } }; -void graph::addEdge(int u, int v) -{ +void graph::addEdge(int u, int v) { adj[u-1].push_back(v-1); adj[v-1].push_back(u-1); } -void graph::dfs() -{ +void graph::depth_first_search() { int n = adj.size(); - vector visited(n,false); + vector visited(n, false); - for(int i = 0;i &visited) -{ +void graph::explore(int u, vector &visited) { visited[u] = true; - for(auto v : adj[u]) - { - if(!visited[v]) - explore(v,visited); + for (auto v : adj[u]) { + if (!visited[v]) { + explore(v, visited); + } } } -int main() -{ +int main() { graph g(4); g.addEdge(1,2); g.addEdge(3,2); - cout< Date: Mon, 18 May 2020 16:57:00 +0530 Subject: [PATCH 3/5] somemore cpplint fixing --- graph/connected_components.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/graph/connected_components.cpp b/graph/connected_components.cpp index c3acad635..a23a54b42 100644 --- a/graph/connected_components.cpp +++ b/graph/connected_components.cpp @@ -5,13 +5,13 @@ using std::vector; class graph { private: - vector> adj; - int connected_components; - void depth_first_search(); - void explore(int, vector&); + vector> adj; + int connected_components; + void depth_first_search(); + void explore(int, vector&); public: - graph(int n): adj(n, vector()) { - connected_components = 0; + graph(int n): adj(n, vector()) { + connected_components = 0; } void addEdge(int, int); int getConnectedComponents() { @@ -48,8 +48,8 @@ void graph::explore(int u, vector &visited) { int main() { graph g(4); - g.addEdge(1,2); - g.addEdge(3,2); + g.addEdge(1, 2); + g.addEdge(3, 2); std::cout << g.getConnectedComponents(); return 0; } From c936a6d87ef773a869e1b144eee2543172b4303b Mon Sep 17 00:00:00 2001 From: Ayaan Khan Date: Mon, 18 May 2020 17:04:35 +0530 Subject: [PATCH 4/5] cpplint fix --- graph/connected_components.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/graph/connected_components.cpp b/graph/connected_components.cpp index a23a54b42..f970f17a2 100644 --- a/graph/connected_components.cpp +++ b/graph/connected_components.cpp @@ -4,20 +4,20 @@ using std::vector; class graph { - private: - vector> adj; - int connected_components; - void depth_first_search(); - void explore(int, vector&); - public: - graph(int n): adj(n, vector()) { - connected_components = 0; - } - void addEdge(int, int); - int getConnectedComponents() { - depth_first_search(); - return connected_components; - } +private: + vector> adj; + int connected_components; + void depth_first_search(); + void explore(int, vector&); +public: + explicit graph(int n): adj(n, vector()) { + connected_components = 0; + } + void addEdge(int, int); + int getConnectedComponents() { + depth_first_search(); + return connected_components; + } }; void graph::addEdge(int u, int v) { From 4df1a2782582f9aec3e28eafce3dbc8aae8b88f4 Mon Sep 17 00:00:00 2001 From: Ayaan Khan Date: Mon, 18 May 2020 17:11:15 +0530 Subject: [PATCH 5/5] Fixed cpplint errors --- graph/connected_components.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/graph/connected_components.cpp b/graph/connected_components.cpp index f970f17a2..9c22cc35e 100644 --- a/graph/connected_components.cpp +++ b/graph/connected_components.cpp @@ -4,20 +4,20 @@ using std::vector; class graph { -private: - vector> adj; - int connected_components; - void depth_first_search(); - void explore(int, vector&); -public: - explicit graph(int n): adj(n, vector()) { - connected_components = 0; - } - void addEdge(int, int); - int getConnectedComponents() { - depth_first_search(); - return connected_components; - } + private: + vector> adj; + int connected_components; + void depth_first_search(); + void explore(int, vector&); + public: + explicit graph(int n): adj(n, vector()) { + connected_components = 0; + } + void addEdge(int, int); + int getConnectedComponents() { + depth_first_search(); + return connected_components; + } }; void graph::addEdge(int u, int v) {