def setUp(self): self.g = Graph(flag_dag=True) self.g.add_vertex(0) self.g.add_vertex(1) self.g.add_vertex(2) self.g.add_edge(GraphEdge(2, 3, 1)) self.g.add_vertex(3) self.g.add_edge(GraphEdge(3, 1, 1)) self.g.add_vertex(4) self.g.add_edge(GraphEdge(4, 1, 1)) self.g.add_edge(GraphEdge(4, 0, 1)) self.g.add_vertex(5) self.g.add_edge(GraphEdge(5, 2, 1)) self.g.add_edge(GraphEdge(5, 0, 1))
__author__ = "Amin" # COMPLETED # PYTHON 3.x import sys import math import itertools from codingame_solutions.utilities.graph import Graph graph = Graph() n = int(input()) # the number of relationships of influence for i in range(n): # x: a relationship of influence between two people (x influences y) x, y = [int(j) for j in input().split()] graph.add_edge((x, y)) print(graph, file=sys.stderr) vertices_pairs = itertools.permutations(graph.vertices(), 2) paths = [] for vertices_pair in vertices_pairs: print("vertices_pair: " + str(vertices_pair), file=sys.stderr) new_paths = graph.find_all_paths(vertices_pair[0], vertices_pair[1]) paths += new_paths
__author__ = 'Amin' # COMPLETED # PYTHON 3.x import sys import math import itertools from codingame_solutions.utilities.graph import Graph graph = Graph() n = int(input()) # the number of relationships of influence for i in range(n): # x: a relationship of influence between two people (x influences y) x, y = [int(j) for j in input().split()] graph.add_edge((x, y)) print(graph, file=sys.stderr) vertices_pairs = itertools.permutations(graph.vertices(), 2) paths = [] for vertices_pair in vertices_pairs: print("vertices_pair: " + str(vertices_pair), file=sys.stderr) new_paths = graph.find_all_paths(vertices_pair[0], vertices_pair[1]) paths += new_paths
__author__ = 'Amin' # COMPLETED # PYTHON 3.x import sys import math from codingame_solutions.utilities.graph import Graph # MAIN persons = Graph() n = int(input()) # the number of adjacency relations for i in range(n): # xi: the ID of a person which is adjacent to yi # yi: the ID of a person which is adjacent to xi xi, yi = [int(j) for j in input().split()] persons.add_edge((xi, yi)) persons.add_edge((yi, xi)) #print(persons, file=sys.stderr) # lets start with first person that has one neighbour persons_with_1_neighbour = persons.get_vertices_with_n_edges(1) print("persons_with_1_neighbour: " + str(persons_with_1_neighbour), file=sys.stderr) paths = persons.find_all_paths_from_vertex(persons_with_1_neighbour[0]) print("paths: " + str(paths), file=sys.stderr)
room = f.readline() room = input() vertex_name, vertex_value, vertex_neighbour_1, vertex_neighbour_2 = [v for v in room.split()] v_names.append(int(vertex_name)) v_values.append(int(vertex_value)) if vertex_neighbour_1 != "E": v_destination_1.append(int(vertex_neighbour_1)) else: v_destination_1.append(-1) if vertex_neighbour_2 != "E": v_destination_2.append(int(vertex_neighbour_2)) else: v_destination_2.append(-1) # create graph g = Graph(flag_dag=True) for name in v_names: g.add_vertex(name) if v_destination_1[name] != -1: g.add_edge(GraphEdge(name, v_destination_1[name], v_values[v_destination_1[name]])) if v_destination_2[name] != -1: g.add_edge(GraphEdge(name, v_destination_2[name], v_values[v_destination_2[name]])) #print(g.edges(), file=sys.stderr) #print(g.vertices(), file=sys.stderr) #print(g.find_longest_path(0), file=sys.stderr) max_dist = max([value for key, value in g.find_longest_path(0).items()]) + v_values[0] # Write an action using print
class GraphTest(unittest.TestCase): def setUp(self): self.g = Graph(flag_dag=True) self.g.add_vertex(0) self.g.add_vertex(1) self.g.add_vertex(2) self.g.add_edge(GraphEdge(2, 3, 1)) self.g.add_vertex(3) self.g.add_edge(GraphEdge(3, 1, 1)) self.g.add_vertex(4) self.g.add_edge(GraphEdge(4, 1, 1)) self.g.add_edge(GraphEdge(4, 0, 1)) self.g.add_vertex(5) self.g.add_edge(GraphEdge(5, 2, 1)) self.g.add_edge(GraphEdge(5, 0, 1)) def test_vertices(self): self.assertEqual(self.g.vertices(), [0, 1, 2, 3, 4, 5]) def test_edges(self): edges = [ GraphEdge(2, 3, 1), GraphEdge(3, 1, 1), GraphEdge(4, 1, 1), GraphEdge(4, 0, 1), GraphEdge(5, 2, 1), GraphEdge(5, 0, 1) ] self.assertEqual(self.g.edges(), edges) def test_topological_sorting(self): self.assertEqual(self.g.topological_sort(), deque([5, 4, 2, 3, 1, 0])) def tearDown(self): pass