+
+ // Concept Graph:
+ inline int null_vertex() { return -1; }
+
+ // Concept IncidenceGraph:
+ inline int source(int f, const Graph&) { return f&VMASK; }
+ inline int target(int f, const Graph&) { return EDGE_END2(f&VMASK, f>>ESHIFT); }
+ inline std::pair<OutEdgeIterator,OutEdgeIterator>
+ out_edges(int v, const Graph&) {
+ return std::make_pair(OutEdgeIterator(v, VE_MIN(v)),
+ OutEdgeIterator(v, VE_MAX(v)));
+ }
+ inline unsigned out_degree(int v, const Graph&) {
+ return VE_MAX(v) - VE_MIN(v);
+ }
+
+ // Concept VertexListGraph:
+ inline std::pair<VertexIterator,VertexIterator> vertices(const Graph&) {
+ return std::make_pair(VertexIterator(0), VertexIterator(N));
+ }
+ inline unsigned num_vertices(const Graph&) { return N; }