Как сделать Аджасенские списки в Python кроме использования словаря? (что-то вроде массива списков или вектора векторов в c ++) - PullRequest
0 голосов
/ 26 января 2020

В python Я заметил, что люди делают графики, используя defaultdict(list) или что-то в этом роде. Как вы пишете list<int> adj[n] или vector<vector<int>> adj(n) в python?

Не будут ли словари, которые в основном unordered_maps, замедлять работу на больших графиках?

1 Ответ

0 голосов
/ 26 января 2020

Используя способ ООП! Взято из Графики и их представления . Спасибо @DarrylG за это!

# A class to represent the adjacency list of the node 
class AdjNode: 
    def __init__(self, data): 
        self.vertex = data 
        self.next = None


# A class to represent a graph. A graph 
# is the list of the adjacency lists. 
# Size of the array will be the no. of the 
# vertices "V" 
class Graph: 
    def __init__(self, vertices): 
        self.V = vertices 
        self.graph = [None] * self.V 

    # Function to add an edge in an undirected graph 
    def add_edge(self, src, dest): 
        # Adding the node to the source node 
        node = AdjNode(dest) 
        node.next = self.graph[src] 
        self.graph[src] = node 

        # Adding the source node to the destination as 
        # it is the undirected graph 
        node = AdjNode(src) 
        node.next = self.graph[dest] 
        self.graph[dest] = node 
...