From 9bc90d3fff3b41a8deccc032c5d55d4147ff1b12 Mon Sep 17 00:00:00 2001 From: chayan das Date: Wed, 28 May 2025 23:09:46 +0530 Subject: [PATCH] Create 3372. Maximize the Number of Target Nodes After Connecting Trees I --- ...r of Target Nodes After Connecting Trees I | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 3372. Maximize the Number of Target Nodes After Connecting Trees I diff --git a/3372. Maximize the Number of Target Nodes After Connecting Trees I b/3372. Maximize the Number of Target Nodes After Connecting Trees I new file mode 100644 index 0000000..d47f42d --- /dev/null +++ b/3372. Maximize the Number of Target Nodes After Connecting Trees I @@ -0,0 +1,54 @@ +class Solution { + + int dfs(int u, int par, vector *adj, int k) { + + if(k < 0) { + return 0; + } + + int res = 1; + for(auto v: adj[u]) { + + if(v == par) continue; + + res += dfs(v, u, adj, k - 1); + } + + return res; + } +public: + vector maxTargetNodes(vector>& edges1, vector>& edges2, int k) { + + int n = edges1.size() + 1; + int m = edges2.size() + 1; + + vector adj1[n + 1]; + vector adj2[m + 1]; + + for(const auto &edge1: edges1) { + adj1[edge1[0]].push_back(edge1[1]); + adj1[edge1[1]].push_back(edge1[0]); + } + + for(const auto &edge2: edges2) { + adj2[edge2[0]].push_back(edge2[1]); + adj2[edge2[1]].push_back(edge2[0]); + } + + vector cnt1(n, 0); + vector cnt2(m, 0); + + int mx2 = 0; + for(int i = 0; i < m; i++) { + cnt2[i] = dfs(i, - 1, adj2, k - 1); + mx2 = max(mx2, cnt2[i]); + } + + for(int i = 0; i < n; i++) { + cnt1[i] = dfs(i, - 1, adj1, k) + mx2; + + } + + return cnt1; + } +};