Python実装コードについて
8479 ワード
Time: 20190924
2019.10 Update:
第1回PATアルゴリズムの生放送授業の訓練班の募集の招待状、クリックして詳しく見ることを歓迎します、
END.
class UnionFind:
def __init__(self, nums):
# boss
self.pre = list(range(nums))
self.size = [1] * nums
def union(self, x, y):
px = self.find(x)
py = self.find(y)
# px size
if self.size[px] > self.size[py]:
px, py = py, px
#
self.pre[px] = py
self.size[py] += self.size[px]
def find_recur(self, x):
# ~
if self.pre[x] != x:
self.pre[x] = self.find(x)
return self.pre[x]
def find(self, x):
r = x
while self.pre[r] != r:
r = self.pre[r]
i = x
while i != r:
tmp = self.pre[i]
self.pre[i] = r
i = tmp
return r
# Driver code
uf = UnionFind(10)
print(uf.pre)
#
uf.find(1)
print(" find :", uf.pre)
uf.union(1,2)
print(" Union :", uf.pre)
uf.union(2,3)
print(" Union :", uf.pre)
uf.union(3, 4)
print(" Union :", uf.pre)
#
# print(uf.find(1)) # 4
# print(uf.find(2)) # 4
# print(uf.find(3)) # 4
# print(uf.find(4)) # 4
for i in uf.pre:
print(uf.find(i))
2019.10 Update:
第1回PATアルゴリズムの生放送授業の訓練班の募集の招待状、クリックして詳しく見ることを歓迎します、
END.