Skip to content

Commit 3b417e6

Browse files
committed
May 29
1 parent ba24768 commit 3b417e6

File tree

2 files changed

+60
-2
lines changed

2 files changed

+60
-2
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
from collections import deque
2+
3+
4+
class Solution:
5+
def __init__(self):
6+
self.even_1, self.odd_1 = 0, 0
7+
self.even_2, self.odd_2 = 0, 0
8+
9+
def __build_adj_list(self, edges: list[list[int]]) -> list[list[int]]:
10+
n = len(edges) + 1
11+
graph = [[] for _ in range(n)]
12+
for u, v in edges:
13+
graph[u].append(v)
14+
graph[v].append(u)
15+
return graph
16+
17+
def __bfs_colour(self, graph: list[list[int]], colour: list[int], flag: bool):
18+
queue = deque([0])
19+
colour[0] = 0
20+
while queue:
21+
u = queue.popleft()
22+
if colour[u] == 0:
23+
if flag:
24+
self.even_1 += 1
25+
else:
26+
self.even_2 += 1
27+
else:
28+
if flag:
29+
self.odd_1 += 1
30+
else:
31+
self.odd_2 += 1
32+
for v in graph[u]:
33+
if colour[v] == -1:
34+
colour[v] = colour[u] ^ 1
35+
queue.append(v)
36+
37+
def maxTargetNodes(self, edges1: list[list[int]], edges2: list[list[int]]) -> list[int]:
38+
graph1, graph2 = map(self.__build_adj_list, (edges1, edges2))
39+
colour_1, colour_2 = [-1] * len(graph1), [-1] * len(graph2)
40+
self.__bfs_colour(graph1, colour_1, True)
41+
self.__bfs_colour(graph2, colour_2, False)
42+
max_target2 = max(self.even_2, self.odd_2)
43+
return [(self.even_1 if colour_1[node] == 0 else self.odd_1) + max_target2
44+
for node in range(len(graph1))]
45+
46+
47+
def main():
48+
edges1 = [[0, 1], [0, 2], [2, 3], [2, 4]]
49+
edges2 = [[0, 1], [0, 2], [0, 3], [2, 7], [1, 4], [4, 5], [4, 6]]
50+
assert Solution().maxTargetNodes(edges1, edges2) == [8, 7, 7, 8, 8]
51+
52+
edges1 = [[0, 1], [0, 2], [0, 3], [0, 4]]
53+
edges2 = [[0, 1], [1, 2], [2, 3]]
54+
assert Solution().maxTargetNodes(edges1, edges2) == [3, 6, 6, 6, 6]
55+
56+
57+
if __name__ == '__main__':
58+
main()

2025-05-May-LeetCoding-Challenge/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
| May 26 | [1857. Largest Color Value in a Directed Graph](https://leetcode.com/problems/largest-color-value-in-a-directed-graph/) | Hard | Unsolved |
3333
| May 27 | [2894. Divisible and Non-divisible Sums Difference](https://leetcode.com/problems/divisible-and-non-divisible-sums-difference/) | Easy | Solved |
3434
| May 28 | [3372. Maximize the Number of Target Nodes After Connecting Trees I](https://leetcode.com/problems/maximize-the-number-of-target-nodes-after-connecting-trees-i/) | Medium | Solved |
35-
| May 29 | []() | | |
35+
| May 29 | [3373. Maximize the Number of Target Nodes After Connecting Trees II](https://leetcode.com/problems/maximize-the-number-of-target-nodes-after-connecting-trees-ii/) | Hard | Unsolved |
3636
| May 30 | [2359. Find Closest Node to Given Two Nodes](https://leetcode.com/problems/find-closest-node-to-given-two-nodes/) | Medium | Solved |
3737
| May 31 | []() | | |
3838

@@ -42,4 +42,4 @@
4242
| --- | --- | --- | --- |
4343
| Easy | 7 | 7 | 0 |
4444
| Medium | 15 | 12 | 3 |
45-
| Hard | 6 | 1 | 5 |
45+
| Hard | 7 | 1 | 6 |

0 commit comments

Comments
 (0)