def primsAlgo(self):
visited = [0]*self.vertexNum
edgeNum=0
visited[0]=True
while edgeNum<self.vertexNum-1:
min = sys.maxsize
for i in range(self.vertexNum):
if visited[i]:
for j in range(self.vertexNum):
if ((not visited[j]) and self.edges[i][j]):
if min > self.edges[i][j]:
min = self.edges[i][j]
s = i
d = j
self.MST.append([self.nodes[s], self.nodes[d], self.edges[s][d]])
visited[d] = True
edgeNum += 1
self.printSolution()
edges = [[0, 10, 20, 0, 0],
[10, 0, 30, 5, 0],
[20, 30, 0, 15, 6],
[0, 5, 15, 0, 8],
[0, 0, 6, 8, 0]]
nodes = ["A","B","C","D","E"]
g = Graph(5, edges, nodes)
g.primsAlgo()
ZGVmIHByaW1zQWxnbyhzZWxmKToKICAgIHZpc2l0ZWQgPSBbMF0qc2VsZi52ZXJ0ZXhOdW0KICAgIGVkZ2VOdW09MAogICAgdmlzaXRlZFswXT1UcnVlCiAgICB3aGlsZSBlZGdlTnVtPHNlbGYudmVydGV4TnVtLTE6CiAgICAgICAgbWluID0gc3lzLm1heHNpemUKICAgICAgICBmb3IgaSBpbiByYW5nZShzZWxmLnZlcnRleE51bSk6CiAgICAgICAgICAgIGlmIHZpc2l0ZWRbaV06CiAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZShzZWxmLnZlcnRleE51bSk6CiAgICAgICAgICAgICAgICAgICAgaWYgKChub3QgdmlzaXRlZFtqXSkgYW5kIHNlbGYuZWRnZXNbaV1bal0pOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBtaW4gPiBzZWxmLmVkZ2VzW2ldW2pdOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluID0gc2VsZi5lZGdlc1tpXVtqXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBqCiAgICAgICAgc2VsZi5NU1QuYXBwZW5kKFtzZWxmLm5vZGVzW3NdLCBzZWxmLm5vZGVzW2RdLCBzZWxmLmVkZ2VzW3NdW2RdXSkKICAgICAgICB2aXNpdGVkW2RdID0gVHJ1ZQogICAgICAgIGVkZ2VOdW0gKz0gMQogICAgICAgIHNlbGYucHJpbnRTb2x1dGlvbigpCmVkZ2VzID0gW1swLCAxMCwgMjAsIDAsIDBdLAogICAgICAgICAgICBbMTAsIDAsIDMwLCA1LCAwXSwKICAgICAgICAgICAgWzIwLCAzMCwgMCwgMTUsIDZdLAogICAgICAgICAgICBbMCwgNSwgMTUsIDAsIDhdLAogICAgICAgICAgICBbMCwgMCwgNiwgOCwgMF1dCgpub2RlcyA9IFsiQSIsIkIiLCJDIiwiRCIsIkUiXQpnID0gR3JhcGgoNSwgZWRnZXMsIG5vZGVzKQpnLnByaW1zQWxnbygpCgo=