Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.71 KB | None | 0 0
  1. from igraph import *
  2. from union_find import UnionFind
  3. # Union find from git@github.com:deehzee/unionfind.git
  4.  
  5. def mst_kruskal(G):
  6. c = G.get_edgelist()
  7. w = [G[i] for i in c]
  8.  
  9. c = [x for _,x in sorted(zip(w,c))]
  10.  
  11. uf = UnionFind(G.vs.indices)
  12. T = Graph(len(G.vs.indices))
  13.  
  14. for e in c:
  15. if not uf.connected(e[0], e[1]):
  16. T.add_edge(e[0], e[1])
  17. uf.union(e[0], e[1])
  18. return T
  19.  
  20. if __name__ == '__main__':
  21. n, m = [int(i) for i in input().split(' ')]
  22. g = Graph(n)
  23. g.es["weight"] = 1.0
  24.  
  25. for i in range(m):
  26. a, b, w = [int(i) for i in input().split(' ')]
  27. print(a, b)
  28. g.add_edge(a, b)
  29. g[a, b] = w
  30.  
  31. mst = mst_kruskal(g)
  32. plot(mst)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement