2025年6月18日 星期三

Union-Find sample

 parent = list(range(5))


def find(x):

  if parent[x]!=x:

    parent[x]=find(parent[x])

  return parent[x]


def union(x,y):

  parent[find(x)]=find(y)

  

for a,b in [[0,1],[1,2],[3,4]]:

  union(a,b)


for a,b in [[0,2],[2,4]]:

  print(f'{a}, {b} 同組?{find(a)==find(b)}')

  

gs = {}

for i in range(5):

  r = find(i)

  if r not in gs:

    gs[r]=[]

  gs[r].append(i)


for g in gs.values():

  print(g)

  

Output:


0, 2 同組?True

2, 4 同組?False

[0, 1, 2]

[3, 4]

沒有留言:

張貼留言