@Override
    public void addEdge(Edge<E> edge) {
        if (edge.getFrom() < 0 || edge.getTo() >= vertices.size())
            throw new IllegalArgumentException("Invalid edge: " + edge + ", from/to indexes out of range");