// Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) //======================================================================= // Graph Colouring Program //======================================================================= #include #include #include #include #include #include #include #include #include #include using namespace boost; using namespace std; typedef string Color; typedef string Colour; typedef string Weight; typedef std::list Color_List; typedef set< Color > ColorSet; typedef string Parameter; typedef pair< Color, int > Pair; typedef set< Pair > ColorPSet; Color_List ColorList; std::map < Color, Color > aColour_map; std::map < Color, Color > inverse_aColour_map; long numChains = 0; vector Parameters; int result; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef adjacency_list < vecS, vecS, bidirectionalS > Traits; dynamic_properties dpp; struct vertex_properties { string vName; Color vColor; Color vNewColor; Traits::vertex_descriptor vPredecessor; float x_coord; float y_coord; }; struct edge_properties { string eName; Color eArrow; Weight eWeight; Color eRedArrow; Color eGreenArrow; Color eBlueArrow; Color eYellowArrow; Color eColor5Arrow; set< Color > eValidColors; set< Pair > ePColors; Traits::edge_descriptor ePredecessor; }; struct graph_properties { }; typedef adjacency_list < vecS, vecS, bidirectionalS >::edge_descriptor edge_t; typedef adjacency_list < vecS, vecS, bidirectionalS >::vertex_descriptor vertex_t; typedef adjacency_list < vecS, vecS, bidirectionalS, property< vertex_predecessor_t, vertex_t, vertex_properties >, property< edge_reverse_t, edge_t, edge_properties >, graph_properties > graph_t;