  
  class Graph:
  
      def __init__(self):
          self.nodes = OrderedDict()  # key = node id, val = node
  
      def add_node(self, id):
          node = Node(id)
          self.nodes[id] = node
          return node
 
</s> remove     "        self.nodes = OrderedDict()  # key = node id, val = node\n",
 </s> add     "        self.nodes = {}  # key = node id, val = node\n", </s> remove     "        self.nodes = OrderedDict()  # key = node id, val = node\n",
 </s> add     "        self.nodes = {}  # key = node id, val = node\n", </s> remove     def add_edge(self, source, dest, weight=0):
        if source not in self.nodes:
            self.add_node(source)
        if dest not in self.nodes:
            self.add_node(dest)
        self.nodes[source].adjacent[self.nodes[dest]] = weight </s> add 
        self.nodes = {}  # key = node id, val = node
  
  class Graph:
  
      def __init__(self):
        self.nodes = {}  # key = node id, val = node
  
      def add_node(self, id):
          node = Node(id)
          self.nodes[id] = node
          return node
keep keep keep keep replace keep keep keep keep keep
 Rework graph challenge and solution (#86) 
graphs_trees/graph/graph.py