15#ifndef MCRL2_PG_GRAPH_H
16#define MCRL2_PG_GRAPH_H
27#define NO_VERTEX ((verti)-1)
46 inline std::pair<verti, verti> operator*();
47 inline std::pair<verti, verti> operator++();
48 inline std::pair<verti, verti> operator++(
int);
74 typedef std::vector<std::pair<verti, verti> >
edge_list;
149 template<
class ForwardIterator>
151 ForwardIterator vertices_begin,
152 ForwardIterator vertices_end,
235 const_edge_iterator edges_begin(
verti v = 0)
const {
241 const_edge_iterator edges_end()
const {
258 template<
class ForwardIterator,
class VertexMapT>
260 ForwardIterator vertices_begin,
261 ForwardIterator vertices_end,
262 VertexMapT &vertex_map,
std::size_t edgei
type used to number edges
void swap(StaticGraph &a, StaticGraph &b)
std::size_t verti
type used to number vertices
std::vector< std::pair< verti, verti > > edge_list
void make_random(verti V, unsigned outdeg, EdgeDirection edge_dir, bool scc)
StaticGraph(const StaticGraph &graph)
edgei degree(verti v) const
friend class EdgeIterator
const_iterator succ_end(verti v) const
void reset(verti V, edgei E, EdgeDirection edge_dir)
edgei indegree(verti v) const
EdgeDirection edge_dir() const
StaticGraph & operator=(const StaticGraph &graph)
void make_subgraph(const StaticGraph &graph, ForwardIterator vertices_begin, ForwardIterator vertices_end, bool proper, EdgeDirection edge_dir=EDGE_NONE)
edgei * predecessor_index_
void make_random_clustered(verti cluster_size, verti V, unsigned outdeg, EdgeDirection edge_dir)
void read_raw(std::istream &is)
void swap(StaticGraph &g)
const_iterator succ_begin(verti v) const
void make_subgraph_threads(const StaticGraph &graph, const verti *verts, const verti nvert, bool proper, EdgeDirection edge_dir=EDGE_NONE)
void make_random_scc(edge_list &edges)
bool has_succ(verti v, verti w) const
void write_raw(std::ostream &os) const
edge_list get_edges() const
void assign(const StaticGraph &graph)
void remove_edges(edge_list &edges)
const_iterator pred_begin(verti v) const
bool has_pred(verti w, verti v) const
const_iterator pred_end(verti v) const
edgei outdegree(verti v) const
const verti * const_iterator