#include <boost/graph/adjacency_list.hpp>
#include <iostream>
int main() {
// Define a simple undirected graph using an adjacency list
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS> Graph;
// Create a graph instance
Graph g;
// Add some vertices and edges to the graph
boost::add_edge(0, 1, g);
boost::add_edge(0, 2, g);
boost::add_edge(1, 2, g);
boost::add_edge(1, 3, g);
// Loop over all edges in the graph
typedef boost::graph_traits<Graph>::edge_iterator edge_iter;
std::pair<edge_iter, edge_iter> edgePair;
for (edgePair = boost::edges(g); edgePair.first != edgePair.second; ++edgePair.first) {
// Get the current edge
boost::graph_traits<Graph>::edge_descriptor e = *edgePair.first;
// Get the source and target vertices of the current edge
boost::graph_traits<Graph>::vertex_descriptor u = boost::source(e, g);
boost::graph_traits<Graph>::vertex_descriptor v = boost::target(e, g);
// Print the edge
std::cout << "Edge: " << u << " -> " << v << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGJvb3N0L2dyYXBoL2FkamFjZW5jeV9saXN0LmhwcD4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IG1haW4oKSB7CiAgICAvLyBEZWZpbmUgYSBzaW1wbGUgdW5kaXJlY3RlZCBncmFwaCB1c2luZyBhbiBhZGphY2VuY3kgbGlzdAogICAgdHlwZWRlZiBib29zdDo6YWRqYWNlbmN5X2xpc3Q8Ym9vc3Q6OnZlY1MsIGJvb3N0Ojp2ZWNTLCBib29zdDo6dW5kaXJlY3RlZFM+IEdyYXBoOwoKICAgIC8vIENyZWF0ZSBhIGdyYXBoIGluc3RhbmNlCiAgICBHcmFwaCBnOwoKICAgIC8vIEFkZCBzb21lIHZlcnRpY2VzIGFuZCBlZGdlcyB0byB0aGUgZ3JhcGgKICAgIGJvb3N0OjphZGRfZWRnZSgwLCAxLCBnKTsKICAgIGJvb3N0OjphZGRfZWRnZSgwLCAyLCBnKTsKICAgIGJvb3N0OjphZGRfZWRnZSgxLCAyLCBnKTsKICAgIGJvb3N0OjphZGRfZWRnZSgxLCAzLCBnKTsKCiAgICAvLyBMb29wIG92ZXIgYWxsIGVkZ2VzIGluIHRoZSBncmFwaAogICAgdHlwZWRlZiBib29zdDo6Z3JhcGhfdHJhaXRzPEdyYXBoPjo6ZWRnZV9pdGVyYXRvciBlZGdlX2l0ZXI7CiAgICBzdGQ6OnBhaXI8ZWRnZV9pdGVyLCBlZGdlX2l0ZXI+IGVkZ2VQYWlyOwogICAgZm9yIChlZGdlUGFpciA9IGJvb3N0OjplZGdlcyhnKTsgZWRnZVBhaXIuZmlyc3QgIT0gZWRnZVBhaXIuc2Vjb25kOyArK2VkZ2VQYWlyLmZpcnN0KSB7CiAgICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IGVkZ2UKICAgICAgICBib29zdDo6Z3JhcGhfdHJhaXRzPEdyYXBoPjo6ZWRnZV9kZXNjcmlwdG9yIGUgPSAqZWRnZVBhaXIuZmlyc3Q7CgogICAgICAgIC8vIEdldCB0aGUgc291cmNlIGFuZCB0YXJnZXQgdmVydGljZXMgb2YgdGhlIGN1cnJlbnQgZWRnZQogICAgICAgIGJvb3N0OjpncmFwaF90cmFpdHM8R3JhcGg+Ojp2ZXJ0ZXhfZGVzY3JpcHRvciB1ID0gYm9vc3Q6OnNvdXJjZShlLCBnKTsKICAgICAgICBib29zdDo6Z3JhcGhfdHJhaXRzPEdyYXBoPjo6dmVydGV4X2Rlc2NyaXB0b3IgdiA9IGJvb3N0Ojp0YXJnZXQoZSwgZyk7CgogICAgICAgIC8vIFByaW50IHRoZSBlZGdlCiAgICAgICAgc3RkOjpjb3V0IDw8ICJFZGdlOiAiIDw8IHUgPDwgIiAtPiAiIDw8IHYgPDwgc3RkOjplbmRsOwogICAgfQoKICAgIHJldHVybiAwOwp9