3
self.parentof = [-1 for _ in range(100001)]4
self.rankof = [1 for _ in range(100001)]8
if self.parentof[ele] == -1:10
par = recur(self.parentof[ele])11
self.parentof[ele] = par16
def unify(self, ele1, ele2):17
p1, p2 = self.find(ele1), self.find(ele2)18
r1, r2 = self.rankof[p1], self.rankof[p2]23
self.parentof[p2] = p125
self.parentof[p1] = p231
def smallestStringWithSwaps(self, s: str, pairs: List[List[int]]) -> str:34
smallest = [s[i] for i in range(len(s))]47
groups[par].append(node)49
for group in groups.values():50
letters, k = sorted([s[i] for i in group]), 053
smallest[i] = letters[k]56
return "".join(smallest)