COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/demo/dim_to_dot.cc @ 959:c80ef5912903

Last change on this file since 959:c80ef5912903 was 931:9227ecd7b0bc, checked in by marci, 20 years ago

SubGraphWrapper? code example, converter from dimacs to graphviz dot file.
The second one can be a tool for generating documentation of code examples.

File size: 1.5 KB
RevLine 
[931]1// -*- c++ -*-
2
3// Use a DIMACS max flow file as stdin.
4// dim_to_dot < dimacs_max_flow_file > dot_output_file
5// This program makes a dot file from a dimacs max flow file.
6// This program can be an aid in making up to date visualized documantation
7// of demo programs.
8
9#include <iostream>
10#include <fstream>
11
12#include <lemon/smart_graph.h>
13#include <lemon/dimacs.h>
14
15using namespace lemon;
16
17using std::cout;
18using std::endl;
19
20int main()
21{   
22  typedef SmartGraph Graph;
23
24  typedef Graph::Edge Edge;
25  typedef Graph::Node Node;
26  typedef Graph::EdgeIt EdgeIt;
27  typedef Graph::NodeIt NodeIt;
28  typedef Graph::EdgeMap<int> LengthMap;
29
30  Graph g;
31  Node s, t;
32  LengthMap length(g);
33
34  readDimacs(std::cin, g, length, s, t);
35
36  cout << "digraph lemon_dot_example {" << endl;
37  cout << "  node [ shape=ellipse, fontname=Helvetica, fontsize=10 ];" << endl;
38  for(NodeIt n(g); n!=INVALID; ++n) {
39    if (n==s) {
40      cout << "  n" << g.id(n)
41           << " [ label=\"" << g.id(n) << " (s)\" ]; " << endl;
42    } else {
43      if (n==t) {
44        cout << "  n" << g.id(n)
45             << " [ label=\"" << g.id(n) << " (t)\" ]; " << endl;
46      } else {
47        cout << "  n" << g.id(n)
48             << " [ label=\"" << g.id(n) << "\" ]; " << endl;
49      }
50    }
51  }
52  cout << "  edge [ shape=ellipse, fontname=Helvetica, fontsize=10 ];" << endl;
53  for(EdgeIt e(g); e!=INVALID; ++e) {
54    cout << "  n" << g.id(g.tail(e)) << " -> " << " n" << g.id(g.head(e))
55         << " [ label=\"" << g.id(e)
56         << ", length:" << length[e] << "\" ]; " << endl;
57  }
58  cout << "}" << endl;
59}
Note: See TracBrowser for help on using the repository browser.