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
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
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 print("Paths: " + str(paths), file=sys.stderr) longest_path_length = max([len(l) for l in paths]) # Write an action using print # To debug: print("Debug messages...", file=sys.stderr) # The number of people involved in the longest succession of influences
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 print("Paths: " + str(paths), file=sys.stderr) longest_path_length = max([len(l) for l in paths]) # Write an action using print # To debug: print("Debug messages...", file=sys.stderr) # The number of people involved in the longest succession of influences