Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def cluster2(ver, eds, num_of_clusters):
- centers = [0]
- count_now = 1
- n = len(ver)
- used = [False] * n
- used[0] = True
- while count_now < num_of_clusters:
- max_eds = []
- for i in range(n):
- if not used[i]:
- min_eds = []
- for v in centers:
- for edg in eds:
- if edg[1] == min(i, v) and edg[2] == max(i, v):
- min_eds.append(edg)
- min_ed = min_eds[0]
- for j in range(len(min_eds)):
- if min_eds[j][0] < min_ed[0]:
- min_ed = min_eds[j]
- max_eds.append(min_ed)
- max_ed = max_eds[0]
- for j in range(len(max_eds)):
- if max_eds[j][0] > max_ed[0]:
- max_ed = max_eds[j]
- u, v = max_ed[1], max_ed[2]
- next_centr = u
- if u in centers:
- next_centr = v
- centers.append(next_centr)
- count_now += 1
- used[next_centr] = True
- res = DisjointSetUnion(len(ver))
- tmp = []
- for i in range(n):
- if not used[i]:
- for v in centers:
- for edg in eds:
- if edg[1] == min(i, v) and edg[2] == max(i, v):
- tmp.append(edg)
- min_ed = tmp[0]
- for j in range(len(tmp)):
- if tmp[j][0] < min_ed[0]:
- min_ed = tmp[j]
- u, v = min_ed[1], min_ed[2]
- root = u
- if root not in centers:
- root = v
- res.union_sets(i, root)
- print(centers)
- return res
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement