1
# Runtime: 6663 ms (Top 46.4%) | Memory: 339.09 MB (Top 7.1%)5
def maxGeneticDifference(6
self, parents: List[int], queries: List[List[int]]8
adj_map = collections.defaultdict(set)10
for i, node in enumerate(parents):15
queries_map = collections.defaultdict(set)18
queries_map[q[0]].add(q[1])21
def helperDFS(curr_root, prefix_map):23
if curr_root in queries_map:24
for val in queries_map[curr_root]:25
bin_rep = format(val, "020b")29
if prefix_map[best_bin + str(1 - int(bin_rep[i]))]:30
best_bin += str(1 - int(bin_rep[i]))32
best_bin += bin_rep[i]33
self.res_map[(curr_root, val)] = int(best_bin, 2) ^ val34
for child in adj_map[curr_root]:35
bin_rep = format(child, "020b")36
for i in range(1, len(bin_rep) + 1):37
prefix_map[bin_rep[0:i]].add(child)38
helperDFS(child, prefix_map)39
for i in range(1, len(bin_rep) + 1):40
prefix_map[bin_rep[0:i]].remove(child)42
initial_prefixmap = collections.defaultdict(set)43
root_rep = format(root, "020b")44
for i in range(1, 21):45
initial_prefixmap[root_rep[0:i]].add(root)46
helperDFS(root, initial_prefixmap)49
res.append(self.res_map[(q[0], q[1])])