class UnionFind(object):
"""
Quick Find
"""
def __init__(self, n):
self.count = n
self.id = range(n)
def find(self, p):
if p >= 0 and p < self.count:
return self.id[p]
def isConnected(self, p, q):
return self.find(p) == self.find(q)
def unionElements(self, p, q):
pID = self.find(p)
qID = self.find(q)
if pID == qID:
return None
i = 0
while i < self.count:
if self.id[i] == pID:
self.id[i] = qID
i += 1
class UnionFind2(object):
"""
Quick Union,每个元素的组指向(等于)父节点的元素,根节点指向(等于)自身
"""
def __init__(self, n):
self.count = n
self.parent = range(n)
self.sz = [1