@Override
    public void initialize(Vertex start) {
        this.queue = new Queue();
        for (int i = 0; i < edges.getSize(); i++) {
            edges.get(i).setVisited(false);
        }
        for (int i = 0; i < vertices.getSize(); i++) {
            vertices.get(i).setColor(VertexColor.WHITE);
            vertices.get(i).setDistance(Integer.MAX_VALUE);
            vertices.get(i).setPath(null);
        }
        start.setColor(VertexColor.GRAY);
        start.setDistance(0);
        queue.enqueue(start);
    }