Skip to content

Commit 7fb9dd5

Browse files
committed
Time: 295 ms (63.29%), Space: 47.2 MB (48.1%) - LeetHub
1 parent 865fa9b commit 7fb9dd5

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
class Solution {
2+
private List<List<Integer>> buildList(int[][] edges) {
3+
int n = edges.length + 1;
4+
List<List<Integer>> adj = new ArrayList<>(n);
5+
for (int i = 0; i < n; i++) adj.add(new ArrayList<>());
6+
for (int[] e : edges) {
7+
adj.get(e[0]).add(e[1]);
8+
adj.get(e[1]).add(e[0]);
9+
}
10+
return adj;
11+
}
12+
13+
private int dfs(List<List<Integer>> adj, int u, int p, int k) {
14+
if (k < 0) return 0;
15+
int cnt = 1;
16+
for (int v : adj.get(u)) {
17+
if (v != p) cnt += dfs(adj, v, u, k - 1);
18+
}
19+
return cnt;
20+
}
21+
22+
public int[] maxTargetNodes(int[][] edges1, int[][] edges2, int k) {
23+
List<List<Integer>> adj1 = buildList(edges1);
24+
List<List<Integer>> adj2 = buildList(edges2);
25+
int m = adj2.size(), maxiB = 0;
26+
for (int i = 0; i < m; i++) {
27+
maxiB = Math.max(maxiB, dfs(adj2, i, -1, k - 1));
28+
}
29+
int n = adj1.size();
30+
int[] res = new int[n];
31+
for (int i = 0; i < n; i++) {
32+
res[i] = dfs(adj1, i, -1, k) + maxiB;
33+
}
34+
return res;
35+
}
36+
}

0 commit comments

Comments
 (0)