# TODO compute the edges of a minimum spanning tree write_tree_edges_to_file(tree_edges, filename + '.mst') if __name__ == '__main__': #读取信息 g = Graph() with open("5000 input") as f: for line in f: try: v1, v2, w = line.split() g.add_edge(v1, v2, {'weight': int(w)}) except: pass node_sets = initialize_disjoint_set(g.get_nodes()) node_count = len(node_sets) #edges = [(g.attributes_of(v, u)['weight'], v, u) for u, v in g.get_edges()] #edges.sort() tree_edges = [] #查看读取信息 #print("node_sets is: ",node_sets) #print("node_count is: ",node_count) #print("edges is: ",edges) #put all the G's node in the queue queue = list(node_sets.keys()) print("queue is: ", queue) #pick r, initinalize r_key = 0
if __name__ == '__main__': #读取信息 #时间换空间 保存当前最优解 start_time = time.process_time() g = Graph() with open("5 input") as f: for line in f: try: v1, v2, w = line.split() g.add_edge(v1, v2, {'weight': int(w)}) except: pass node_dist = initialize_disjiont_set(g.get_nodes()) print(g.get_nodes()) print(node_dist) # O(n) first_node = list(g.get_nodes())[0] #O(1) node_sets = set([first_node]) #O(1) tree_edges = [] print(g.neighbors(first_node)) for node in g.neighbors(first_node): # O(n) if node_dist[node][0] == -1 or g.attributes_of( first_node, node).get('weight') < node_dist[node][0]: node_dist[node] = (g.attributes_of(first_node, node)["weight"], first_node) for i in range(len(g.get_nodes()) - 1): # O(n) min_node = None