""" Térinformatikai algoritmusok Gráfok ábrázolási formái és bejárásai Máté Cserép """ import csv import networkx as nx # pip3 install networkx # Read user input start_city = input('Start city: ') transfer_number = int(input('Number of transfers: ')) graph = nx.Graph() # undirected graph # use nx.DiGraph() for directed graphs # Read CSV file and construct graph with open('flights.csv') as csv_file: csv_reader = csv.reader(csv_file, delimiter=';') for row in csv_reader: #print('Reading flight {0} <=> {1}'.format(row[0], row[1])) graph.add_edge(row[0], row[1]) # Check existance of start city if graph.has_node(start_city): reachable_cities = [ start_city ] # Do breadth first search successors = nx.bfs_successors(graph, start_city, transfer_number) for item in successors: print('{0} -> {1}'.format(item[0], item[1])) reachable_cities += item[1] print('Reachable cities: {0}'.format(reachable_cities)) else: print('{0} city is unknown'.format(start_city))