text: Пример: #include <iostream> #include <list> #include <algorithm> #include <boost/graph/adjacency_list.hpp> #include <boost/graph/topological_sort.hpp> #include <iterator> #include <utility> int main(int , char* ) { using namespace boost; // тип графа typedef adjacency_list<vecS, vecS, directedS, property<vertex_color_t, default_color_type> > Graph; // дескриптор вершин typedef boost::graph_traits<Graph>::vertex_descriptor Vertex; // контейнер для цепочки вершин typedef std::vector<Vertex> container; // тип представления дуг графа typedef std::pair<std::size_t,std::size_t> Pair; // Дуги графа Pair edges = { Pair(0,1), Pair(2,4), Pair(2,5), Pair(0,3), Pair(1,4), Pair(4,3) }; // Граф Graph G(edges, edges + 6, 6); // словарь для получения номеров вершин по дескриптору вершин boost::property_map<Graph, vertex_index_t>::type id = get(vertex_index, G); // контейнер для хранения отсортированных вершин container c; // выполнение алгоритма topological_sort(G, std::back_inserter(c)); // Вывод результата: перебор дескрипторов графа в контейнере, // получение порядковых номеров вершин std::cout << "Топологическая проверка: "; for (container::reverse_iterator ii = c.rbegin(); ii != c.rend(); ++ii) std::cout << id << " "; std::cout << std::endl; return 0; } Подробнее Boost Graph Library.