【发布时间】:2011-03-25 12:05:40
【问题描述】:
我正在尝试使用 Boost 图形库。我想为我的图打印出拓扑排序。但是,我想要在图表上的输出是顶点的实际名称,而不是数字位置。例如,在以下示例中:
typedef boost::adjacency_list<vecS, vecS, directedS,
property<vertex_name_t, std::string>,
property<edge_weight_t, int> > Graph;
typedef boost::graph_traits<Graph>::vertex_descriptor Vertex;
typedef std::vector< Vertex > container;
Graph g;
BOOST_CHECK(read_graphviz(in, g, dp, "id"));
container c;
topological_sort(g, std::back_inserter(c));
std::cout << "A topological ordering: ";
for ( container::reverse_iterator ii=c.rbegin(); ii!=c.rend(); ++ii)
std::cout <<*ii<<" ";
std:: cout <<std::endl;
我得到以下输出:
A topological ordering: 45 40 41 34 35 33 43 30 31 36 32 26 27 25 23 24 19 46 47 18 48 17 20 21 49 50 16 51 15 44 14 22 42 13 37 38 9 11 28 29 12 7 39 6 8 5 10 3 4 0 2 1
这些值是有序顶点的位置,但我宁愿知道每个顶点的名称。有人知道怎么做吗?
【问题讨论】: