-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathminimum-spanning-tree.py
72 lines (61 loc) · 1.92 KB
/
minimum-spanning-tree.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
class vertex:
def __init__(self, id, visited):
self.id = id
self.visited = visited
class edge:
def __init__(self, weight, visited, src, dest):
self.weight = weight
self.visited = visited
self.src = src
self.dest = dest
class graph:
g = [] #vertices
e = [] #edges
def __init__(self, g, e):
self.g = g
self.e = e
# This method returns the vertex with a given id if it
# already exists in the graph, returns NULL otherwise
def vertex_exists(self, id):
for i in range(len(self.g)):
if self.g[i].id == id:
return self.g[i]
return None
# This method generates the graph with v vertices
# and e edges
def generate_graph(self, vertices, edges):
# create vertices
for i in range(vertices):
v = vertex(i + 1, False)
self.g.append(v)
# create edges
for i in range(len(edges)):
src = self.vertex_exists(edges[i][1])
dest = self.vertex_exists(edges[i][2])
e = edge(edges[i][0], False, src, dest)
self.e.append(e)
def find_min_spanning_tree(self):
weight = -1
return weight
def print_graph(self):
for i in range(len(self.g)):
print(str(self.g[i].id) + " " + str(self.g[i].visited) + "\n")
for i in range(len(self.e)):
print(str(self.e[i].src.id) + "->" + str(self.e[i].dest.id) + "[" + str(self.e[i].weight) + ", " + str(self.e[i].visited) + "] ")
print("\n")
def get_graph(self):
res = ""
for i in range(len(self.e)):
if(i == len(self.e)-1):
res += "[" + str(self.e[i].src.id) + "->" + str(self.e[i].dest.id) + "]"
else:
res += "[" + str(self.e[i].src.id) + "->" + str(self.e[i].dest.id) + "],"
return res
def print_mst(self,w):
print("MST")
for i in range(len(self.e)):
if self.e[i].visited == True:
print(str(self.e[i].src.id) + "->"
+ str(self.e[i].dest.id))
print("weight: " + str(w))
print("\n")