defisSame(self, u, v): u = self.find(u) v = self.find(v) return u == v
deffind(self, u): if u == self.parent[u]: return u else: self.parent[u] = self.find(self.parent[u]) return self.parent[u]
defunion(self, u, v): u = self.find(u) v = self.find(v) if u == v: return # if self.rank[u] <= self.rank[v]: # self.parent[u] = v # if self.rank[u] == self.rank[v]: # self.rank[v] += 1 # else: # self.parent[v] = u self.parent[v] = u