{"record":{"id":"6383c311aa4634d6","repo":"TheAlgorithms/Python","slug":"vertex-indexes-must-be-in-0-size","errorCode":null,"errorMessage":"Vertex indexes must be in [0; size).","messagePattern":"Vertex indexes must be in \\[0; size\\)\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"graphs/breadth_first_search_zero_one_shortest_path.py","lineNumber":59,"sourceCode":"        >>> g.add_edge(1, 0, 1)\n        >>> list(g[0])\n        [Edge(destination_vertex=1, weight=0)]\n        >>> list(g[1])\n        [Edge(destination_vertex=0, weight=1)]\n        >>> g.add_edge(0, 1, 2)\n        Traceback (most recent call last):\n            ...\n        ValueError: Edge weight must be either 0 or 1.\n        >>> g.add_edge(0, 2, 1)\n        Traceback (most recent call last):\n            ...\n        ValueError: Vertex indexes must be in [0; size).\n        \"\"\"\n        if weight not in (0, 1):\n            raise ValueError(\"Edge weight must be either 0 or 1.\")\n\n        if to_vertex < 0 or to_vertex >= self.size:\n            raise ValueError(\"Vertex indexes must be in [0; size).\")\n\n        self._graph[from_vertex].append(Edge(to_vertex, weight))\n\n    def get_shortest_path(self, start_vertex: int, finish_vertex: int) -> int | None:\n        \"\"\"\n        Return the shortest distance from start_vertex to finish_vertex in 0-1-graph.\n              1                  1         1\n         0--------->3        6--------7>------->8\n         |          ^        ^        ^         |1\n         |          |        |        |0        v\n        0|          |0      1|        9-------->10\n         |          |        |        ^    1\n         v          |        |        |0\n         1--------->2<-------4------->5\n              0         1        1\n        >>> g = AdjacencyList(11)\n        >>> g.add_edge(0, 1, 0)\n        >>> g.add_edge(0, 3, 1)","sourceCodeStart":41,"sourceCodeEnd":77,"githubUrl":"https://github.com/TheAlgorithms/Python/blob/f5988cc09713315817df6a7e327e258013a94440/graphs/breadth_first_search_zero_one_shortest_path.py#L41-L77","documentation":"Raised by Graph.add_edge (graphs/breadth_first_search_zero_one_shortest_path.py:59) when to_vertex is negative or >= self.size (the vertex count fixed at construction). Vertices are integer indexes into a pre-allocated adjacency list, so destinations must fall in [0, size). Note the guard checks only to_vertex, not from_vertex — an out-of-range from_vertex will instead raise IndexError later.","triggerScenarios":"g.add_edge(0, 2, 1) on a Graph(size=2); negative indexes such as g.add_edge(0, -1, 1); off-by-one loops like `for v in range(size + 1)` producing v == size.","commonSituations":"Converting from 1-based external vertex IDs to 0-based indexes incorrectly; graphs built from files where an edge references a vertex ID >= declared vertex count; iterating inclusive ranges by mistake.","solutions":["Fix the vertex count at construction: Graph(size=1 + max(all vertex ids))","Convert 1-based IDs to 0-based: to_vertex = external_id - 1","Bounds-check edges while loading: assert 0 <= to_vertex < g.size before add_edge"],"exampleFix":"# before\ng = Graph(size=2)\ng.add_edge(0, 2, 1)  # 2 out of range\n\n# after\nids = [u for u, v, _ in edges] + [v for u, v, _ in edges]\ng = Graph(size=1 + max(ids))\nfor u, v, w in edges:\n    g.add_edge(u, v, w)","handlingStrategy":"validation","validationCode":"if not (0 <= to_vertex < g.size and 0 <= from_vertex < g.size):\n    raise IndexError(f\"vertex out of range [0, {g.size})\")\ng.add_edge(from_vertex, to_vertex, weight)","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Size the graph as 1 + max vertex id before adding edges","Convert 1-based external ids to 0-based indexes in one place","Remember from_vertex is not validated by the library — check it yourself"],"tags":["graphs","index-error","bounds-check"],"backgroundTag":null,"analyzedSha":"f5988cc09713315817df6a7e327e258013a94440","analyzedAt":"2026-08-14T17:30:07.041Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}