Skip to content

Commit 0f87c75

Browse files
authored
Create 3372. Maximize the Number of Target Nodes After Connecting Tre… (#807)
2 parents dc080df + 9bc90d3 commit 0f87c75

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
class Solution {
2+
3+
int dfs(int u, int par, vector<int> *adj, int k) {
4+
5+
if(k < 0) {
6+
return 0;
7+
}
8+
9+
int res = 1;
10+
for(auto v: adj[u]) {
11+
12+
if(v == par) continue;
13+
14+
res += dfs(v, u, adj, k - 1);
15+
}
16+
17+
return res;
18+
}
19+
public:
20+
vector<int> maxTargetNodes(vector<vector<int>>& edges1, vector<vector<int>>& edges2, int k) {
21+
22+
int n = edges1.size() + 1;
23+
int m = edges2.size() + 1;
24+
25+
vector<int> adj1[n + 1];
26+
vector<int> adj2[m + 1];
27+
28+
for(const auto &edge1: edges1) {
29+
adj1[edge1[0]].push_back(edge1[1]);
30+
adj1[edge1[1]].push_back(edge1[0]);
31+
}
32+
33+
for(const auto &edge2: edges2) {
34+
adj2[edge2[0]].push_back(edge2[1]);
35+
adj2[edge2[1]].push_back(edge2[0]);
36+
}
37+
38+
vector<int> cnt1(n, 0);
39+
vector<int> cnt2(m, 0);
40+
41+
int mx2 = 0;
42+
for(int i = 0; i < m; i++) {
43+
cnt2[i] = dfs(i, - 1, adj2, k - 1);
44+
mx2 = max(mx2, cnt2[i]);
45+
}
46+
47+
for(int i = 0; i < n; i++) {
48+
cnt1[i] = dfs(i, - 1, adj1, k) + mx2;
49+
50+
}
51+
52+
return cnt1;
53+
}
54+
};

0 commit comments

Comments
 (0)