sl@0: // Copyright (c) Jeremy Siek 2001 sl@0: // sl@0: // Distributed under the Boost Software License, Version 1.0. (See sl@0: // accompanying file LICENSE_1_0.txt or copy at sl@0: // http://www.boost.org/LICENSE_1_0.txt) sl@0: sl@0: // NOTE: this final is generated by libs/graph/doc/transitive_closure.w sl@0: sl@0: /* sl@0: * © Portions copyright (c) 2006-2007 Nokia Corporation. All rights reserved. sl@0: */ sl@0: sl@0: #ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION sl@0: #error The transitive closure algorithm uses partial specialization. sl@0: #endif sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: #ifdef __SYMBIAN32__ sl@0: #include "std_log_result.h" sl@0: #define LOG_FILENAME_LINE __FILE__, __LINE__ sl@0: #endif sl@0: sl@0: int sl@0: main(int, char *[]) sl@0: { sl@0: using namespace boost; sl@0: typedef property < vertex_name_t, char >Name; sl@0: typedef property < vertex_index_t, std::size_t, Name > Index; sl@0: typedef adjacency_list < listS, listS, directedS, Index > graph_t; sl@0: typedef graph_traits < graph_t >::vertex_descriptor vertex_t; sl@0: graph_t G; sl@0: std::vector < vertex_t > verts(4); sl@0: for (int i = 0; i < 4; ++i) sl@0: verts[i] = add_vertex(Index(i, Name('a' + i)), G); sl@0: add_edge(verts[1], verts[2], G); sl@0: add_edge(verts[1], verts[3], G); sl@0: add_edge(verts[2], verts[1], G); sl@0: add_edge(verts[3], verts[2], G); sl@0: add_edge(verts[3], verts[0], G); sl@0: sl@0: std::cout << "Graph G:" << std::endl; sl@0: print_graph(G, get(vertex_name, G)); sl@0: sl@0: adjacency_list <> TC; sl@0: transitive_closure(G, TC); sl@0: sl@0: std::cout << std::endl << "Graph G+:" << std::endl; sl@0: char name[] = "abcd"; sl@0: print_graph(TC, name); sl@0: std::cout << std::endl; sl@0: sl@0: std::ofstream out("tc-out.dot"); sl@0: write_graphviz(out, TC, make_label_writer(name)); sl@0: #ifdef __SYMBIAN32__ sl@0: testResultXml("transitive_closure"); sl@0: close_log_file(); sl@0: #endif sl@0: sl@0: return 0; sl@0: }