class Nhom: def __init__(self, lop): self.cha = {x: x for x in lop} self.co = dict.fromkeys(self.cha, 1) self.so_nhom = len(self.cha) def goc(self, x): while self.cha[x] != x: self.cha[x] = self.cha[self.cha[x]] x = self.cha[x] return x def gop(self, a, b): a, b = self.goc(a), self.goc(b) if a == b: return if self.co[a] < self.co[b]: a, b = b, a self.cha[b] = a self.co[a] += self.co[b] self.so_nhom -= 1 nhom = Nhom("ABCD") nhom.gop("A", "B") nhom.gop("B", "C") assert nhom.goc("A") == nhom.goc("C") != nhom.goc("D") nhom.gop("A", "C") assert nhom.so_nhom == 2 nhom.gop("C", "D") assert nhom.so_nhom == 1 print("Còn một nhóm sau khi nối C với D.")