class Unite_and_find(object):
def __init__(self,nums):
self.parents = [i for i in range(nums)]
self.ranks = [0 for _ in range(nums)]
self.length = nums
def find(self,x):
if self.parents[x] == x:
return x
else:
self.parents[x] = self.find(self.parents[x])
return self.parents[x]
def unite(self,x,y):
x = self.find(x)
y = self.find(y)
if x==y:
return
if self.ranks[x]<self.ranks[y]:
self.parents[x] = y
else:
self.parents[y] = x
if self.ranks[x]==self.ranks[y]:
self.ranks[x]+=1
def same(self,x,y):
return self.find(x)==self.find(y)
def set_num(self):
num = 0
for ind in range(self.length):
if self.parents[ind]==ind:
num+=1
return num
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。