def del_vertex(self, vertex):
        """Removes the vertex ``vertex`` and all incident edges from the graph.

        **Note** that this is an expensive operation that should be avoided!

        Running time is O(V+E)

        :param vertex: Vertex
        :return: ``True`` if ``vertex`` was removed from the graph. ``False`` otherwise.
        """
        for v_vertex in self.adj_dict[vertex]:
            self.indegrees[v_vertex] -= 1

        for v_vertex in self.vertices():
            if vertex in self.adj_dict[v_vertex]:
                self.adj_dict[v_vertex].remove(vertex)

        if vertex in self._vertices:
            self._vertices.remove(vertex)
            return True

        return False