1
# Runtime: 1385 ms (Top 99.43%) | Memory: 59.9 MB (Top 71.02%)4
self.roots = [i for i in range(n)]8
self.roots[v] = self.find(self.roots[v])12
def union(self, u, v):13
self.roots[self.find(u)] = self.find(v)17
def minimumHammingDistance(18
self, source: List[int], target: List[int], allowedSwaps: List[List[int]]20
uf = UnionFind(len(source))21
for idx1, idx2 in allowedSwaps:24
m = collections.defaultdict(set)25
for i in range(len(source)):29
for indices in m.values():32
freq[source[i]] = freq.get(source[i], 0) + 133
freq[target[i]] = freq.get(target[i], 0) - 134
res += sum(val for val in freq.values() if val > 0)