public boolean removeVertex(final City city) {
        int index = getIndex(city);
        if (index < 0) {
            return false;
        } else {
            cities[index] = null;
        }
        for (int i = 0; i < edges.length; i++) {
            if (i == index) {
                edges[index] = new int[edges[index].length];
            } else {
                for (int x = 0; x < edges[i].length; x++) {
                    if (x == index) {
                        edges[i][x] = 0;
                    }
                }
            }
        }
        currentSize--;

        defragment();
        return true;
    }