|
The simple example illustrates how to create a small graph and to
assign some values.
To see how static graphs can be used in a max flow algorithm - please
see the source file mfs.c in the directory test/flow.
#include <LEDA/static_graph.h>
#include <LEDA/node_slot.h>
#include <LEDA/edge_slot.h>
#include <LEDA/array.h>
using namespace leda;
struct node_weight:public data_slots<0>
{ int weight; }
struct edge_cap:public data_slots<0>
{ int cap; }
typedef static_graph<opposite_graph, node_weight,
edge_cap> st_graph;
typedef st_graph::node st_node;
typedef st_graph::edge st_edge;
int main ()
{
st_graph G;
array<st_node> v(4);
array<st_edge> e(4);
G.start_construction(4,4);
for(int i =0; i < 4; i++) v[i] = G.new_node();
e[0] = G.new_edge(v[0], v[1]);
e[1] = G.new_edge(v[0], v[2]);
e[2] = G.new_edge(v[1], v[2]);
e[3] = G.new_edge(v[3], v[1]);
G.finish_construction();
st_node v;
st_edge e;
forall_nodes(v, G) v->weight = 1;
forall_edges(e, G) e->cap = 10;
return 0;
} |