       "name": "stdout",
       "output_type": "stream",
       "text": [
        "Success: test_graph\n",
        "Success: test_graph\n"
       ]
      }
     ],
     "source": [
      "%run -i test_graph.py"
 
</s> remove     "    def __init__(self, id):\n",
    "        # TODO: Implement me\n",
    "        self.adjacent = {}  # key = node, val = weight\n",
 </s> add     "    def __init__(self, key):\n",
    "        self.key = key\n",
    "        self.visit_state = State.unvisited\n",
    "        self.incoming_edges = 0\n",
    "        self.adj_nodes = {}  # Key = key, val = Node\n",
    "        self.adj_weights = {}  # Key = Node, val = weight\n", </s> remove     "* Can we assume the inputs are valid?\n",
 </s> add     "* If we try to add a node that already exists, do we just do nothing?\n",
    "    * Yes\n",
    "* If we try to delete a node that doesn't exist, do we just do nothing?\n",
    "    * Yes\n",
    "* Can we assume this fits memory?\n",
      "Success: test_graph_undirected\n"
       "name": "stdout",
       "output_type": "stream",
       "text": [
        "Success: test_graph\n",
      "Success: test_graph_undirected\n"
       ]
      }
     ],
     "source": [
      "%run -i test_graph.py"
keep keep keep keep replace keep keep keep keep keep
 Rework graph challenge and solution (#90) 
graphs_trees/graph/graph_solution.ipynb