#include <iostream>
#include <utility>
#include <algorithm>
#include <vector>
#include "boost/graph/graph_traits.hpp"
#include "boost/graph/adjacency_list.hpp"
using namespace boost;
typedef adjacency_list<vecS, vecS, undirectedS> UndirectedGraph;
typedef boost::graph_traits<UndirectedGraph>::edge_iterator edge_iterator;
int graph_show(UndirectedGraph &g);
int main(int argc, char *argv[])
{
//UndirectedGraph g;
typedef boost::graph_traits<UndirectedGraph>::edge_descriptor edge_descriptor;
edge_descriptor ed;
int Nl=4;
std::vector<edge_descriptor> edge_list;
std::vector<std::vector<edge_descriptor> > graph_edge_list;
std::vector<UndirectedGraph> graph_list(Nl); // init Nl graphs in the vector
bool inserted;
for (int nb = 0; nb < Nl; ++nb)
//while(nb<Nl)
{
tie(ed,inserted)=add_edge(nb,nb+1,graph_list[nb]);
edge_list.push_back(ed);
tie(ed,inserted)=add_edge(nb,nb+1,graph_list[nb]);
edge_list.push_back(ed);
graph_edge_list.push_back(edge_list);
//nb=nb+1;
//graph_list.push_back(g);
}
std::cout<<"size of the graph vector is: "<<graph_list.size()<<std::endl;
remove_edge(graph_edge_list[0][0],graph_list[0]);
for (int ig = 0; ig < Nl; ++ig) {
std::cout<<"graph#"<<ig<<std::endl;
std::cout<<"Size of edge_list is: "<<graph_edge_list[ig].size()<<std::endl;
graph_show(graph_list[ig]);
}
std::cout<<"Success"<<std::endl;
return 0;
}
int graph_show(UndirectedGraph &g)
{
std::cout<<"Number of edges is : "<<boost::num_edges(g)<<std::endl;
std::cout<<"Number of vertices is : "<<boost::num_vertices(g)<<std::endl;
std::pair<edge_iterator,edge_iterator> ei=edges(g);
for (edge_iterator edge_iter = ei.first; edge_iter!=ei.second; ++edge_iter) {
std::cout<<"("<< boost::source(*edge_iter,g)<<","<<boost::target(*edge_iter,g)<<")"<<std::endl;
}
typedef boost::graph_traits<UndirectedGraph>::vertex_iterator iter_v;
std::cout<<"vertices(g)={ ";
for (std::pair<iter_v,iter_v> p = vertices(g); p.first != p.second; ++p.first) {
std::cout<< *p.first;
std::cout<<" ";
}
std::cout<<"}"<<std::endl;
return 0;
}