From f1b005ca8623a2ab3929dd34eb958802d806dd5e Mon Sep 17 00:00:00 2001 From: chayan das <110921638+Chayandas07@users.noreply.github.com> Date: Thu, 16 May 2024 02:22:27 +0530 Subject: [PATCH] Create 16 May Divisibility tree --- 16 May Divisibility tree | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 16 May Divisibility tree diff --git a/16 May Divisibility tree b/16 May Divisibility tree new file mode 100644 index 00000000..db32a516 --- /dev/null +++ b/16 May Divisibility tree @@ -0,0 +1,40 @@ +class Solution { +public: + int dfshelper(int src, vector>& adj, bool*visited, int& ans) + { + int count = 1; + visited[src] = true; + for (auto nbr : adj[src]) + { + if (!visited[nbr]) + { + int subtree_count = dfshelper(nbr, adj, visited, ans); + if (subtree_count % 2 == 0) + { + ans++; + } + else + { + count += subtree_count; + } + } + } + return count; + } + + int minimumEdgeRemove(int n, vector>& edges) + { + vector> adj(n); + bool*visited=new bool[n]{false}; + + for (const auto& edge : edges) + { + adj[edge[0] - 1].push_back(edge[1] - 1); + adj[edge[1] - 1].push_back(edge[0] - 1); + } + + int ans = 0; + dfshelper(0, adj, visited, ans); + return ans; + } +};