Advertisement
lorenapop

program

Mar 24th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.82 KB | None | 0 0
  1. from copy import deepcopy
  2. from UI import UI
  3. from Graph import Graph
  4. from EdgesPropriety import Edges
  5.  
  6. graph = "NULL"
  7. costs = "NULL"
  8.  
  9.  
  10. def load_from_file():
  11. f = open("data.txt", "r")
  12. line = f.readline().strip().split()
  13. nrVertices = int(line[0])
  14. nrEdges = int(line[1])
  15. global graph
  16. global costs
  17. graph = Graph(nrVertices)
  18. costs = Edges()
  19.  
  20. for x in range(nrEdges):
  21. line = f.readline().strip().split()
  22. start_vertex = int(line[0])
  23. end_vertex = int(line[1])
  24. try:
  25. value = int(line[2])
  26. except:
  27. value = line[2]
  28. graph.add_edge(start_vertex, end_vertex)
  29. costs.add_cost((start_vertex, end_vertex), value)
  30.  
  31.  
  32. def run():
  33. copy_graph = deepcopy(graph)
  34. copy_costs = deepcopy(costs)
  35. ui = UI()
  36. ui.clear()
  37. while True:
  38. option = ui.main_menu()
  39.  
  40. if option == 0:
  41. ui.clear()
  42. break
  43. elif option == 1:
  44. ui.clear()
  45. ui.number_vertices(graph.get_nr_vertices())
  46.  
  47. elif option == 2:
  48. ui.clear()
  49. start_vertex = ui.read_vertex("Enter start vertex: ", graph.get_dict_keys())
  50. end_vertex = ui.read_vertex("Enter end vertex: ", graph.get_dict_keys())
  51. if graph.is_edge(start_vertex, end_vertex) == True:
  52. print("Yes")
  53. else:
  54. print("No")
  55.  
  56. elif option == 3:
  57. ui.clear()
  58. vertex = ui.read_vertex("Enter vertex: ", graph.get_dict_keys())
  59. x = graph.vertex_degree(vertex)
  60. print("In degree:", str(x[0]), "\nOut degree:", str(x[1]))
  61.  
  62. elif option == 4:
  63. ui.clear()
  64. vertex = ui.read_vertex("Enter vertex: ", graph.get_dict_keys())
  65. print(graph.outbound(vertex))
  66.  
  67. elif option == 5:
  68. ui.clear()
  69. vertex = ui.read_vertex("Enter vertex: ", graph.get_dict_keys())
  70. print(graph.inbound(vertex))
  71.  
  72.  
  73. elif option == 6:
  74. ui.clear()
  75. start_vertex = ui.read_vertex("Enter start vertex: ", graph.get_dict_keys())
  76. end_vertex = ui.read_vertex("Enter end vertex: ", graph.get_dict_keys())
  77. if graph.is_edge(start_vertex, end_vertex):
  78. costs.get_cost(start_vertex, end_vertex)
  79. else:
  80. print("That edge does not exist!")
  81.  
  82.  
  83. elif option == 7:
  84. ui.clear()
  85. start_vertex = ui.read_vertex("Enter start vertex: ", graph.get_dict_keys())
  86. end_vertex = ui.read_vertex("Enter end vertex: ", graph.get_dict_keys())
  87. if graph.is_edge(start_vertex, end_vertex):
  88. value = input("Enter cost value: ").strip()
  89. costs.modify_cost(start_vertex, end_vertex, value)
  90. ui.clear()
  91. else:
  92. print("That edge does not exist!")
  93.  
  94.  
  95. elif option == 8:
  96. ui.clear()
  97. start_vertex = ui.read_vertex("Enter start vertex: ", graph.get_dict_keys())
  98. end_vertex = ui.read_vertex("Enter end vertex: ", graph.get_dict_keys())
  99. if graph.is_edge(start_vertex, end_vertex):
  100. print("That edge already exists!")
  101. else:
  102. value = input("Enter cost value: ").strip()
  103. graph.add_edge(start_vertex, end_vertex)
  104. costs.add_cost((start_vertex, end_vertex), value)
  105. ui.clear()
  106.  
  107. elif option == 9:
  108. ui.clear()
  109. start_vertex = ui.read_vertex("Enter start vertex: ", graph.get_dict_keys())
  110. end_vertex = ui.read_vertex("Enter end vertex: ", graph.get_dict_keys())
  111. if graph.is_edge(start_vertex, end_vertex):
  112. graph.remove_edge(start_vertex, end_vertex)
  113. removed = []
  114. removed.append((start_vertex, end_vertex))
  115. costs.remove_edges(removed)
  116. else:
  117. print("That edge does not exist!")
  118.  
  119. elif option == 10:
  120. ui.clear()
  121. vertex = ui.read_new_vertex("Enter vertex (positive integer): ", graph.get_dict_keys())
  122. graph.add_vertex(vertex)
  123. ui.clear()
  124.  
  125. elif option == 11:
  126. ui.clear()
  127. vertex = ui.read_vertex("Enter vertex (positive integer): ", graph.get_dict_keys())
  128. removed = graph.remove_vertex(vertex)
  129. costs.remove_edges(removed)
  130. ui.clear()
  131.  
  132. elif option == 12:
  133. ui.clear()
  134. ui.show(copy_graph)
  135.  
  136. elif option == 13:
  137. ui.clear()
  138. ui.show(copy_costs)
  139.  
  140. elif option == 14:
  141. ui.clear()
  142. ui.show(graph)
  143.  
  144. elif option == 15:
  145. ui.clear()
  146. ui.show(costs)
  147.  
  148.  
  149. run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement