public List<V> bfs() //– возвращает последовательность вершин, полученную путём обхода графа в ширину;
    {
        List<V> vertexes = new LinkedList<V>();
        HashMap<V, Boolean> vMarks = new HashMap<V, Boolean>();
        for(V v: neighbors.keySet())
            vMarks.put(v, false);

        LinkedList<V> q = new LinkedList<V>();
        for (V vertex : neighbors.keySet()) {
            if(vMarks.get(vertex) == false) {
                q.addFirst(vertex);
                while(!q.isEmpty()) {
                    V v = q.removeLast();
                    vMarks.put(v, true);
                    vertexes.add(v);
                    for(E e: edges)
                        if(e.InVertex().equals(v))
                            if(vMarks.get(e.OutVertex()) == false)
                                q.addFirst(e.OutVertex());

                }
            }
        }
        return vertexes;
    }