COIN-OR::LEMON - Graph Library

Changeset 1681:84e43c7ca1e3 in lemon-0.x for demo


Ignore:
Timestamp:
09/12/05 13:24:54 (14 years ago)
Author:
Balazs Dezso
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2201
Message:

SubGraphAdaptors? with edge checking functionality.

Improved grid_graph_demo

Location:
demo
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • demo/grid_graph_demo.cc

    r1680 r1681  
    22#include <lemon/graph_adaptor.h>
    33#include <lemon/graph_to_eps.h>
     4#include <lemon/bfs.h>
    45#include <lemon/xy.h>
    56
     
    1112
    1213int main() {
    13   GridGraph graph(5, 7);
     14  ifstream in("grid_graph_demo.in");
     15  int width, height;
     16  in >> width >> height;
     17  int start_x, start_y;
     18  in >> start_x >> start_y;
     19  int stop_x, stop_y;
     20  in >> stop_x >> stop_y;
     21
     22  GridGraph graph(width, height);
     23  GridGraph::Node start = graph(start_x - 1, start_y - 1);
     24  GridGraph::Node stop = graph(stop_x - 1, stop_y - 1);
     25  GridGraph::NodeMap<bool> filter(graph);
     26
     27  for (int j = 0; j < height; ++j) {
     28    in >> ws;
     29    for (int i = 0; i < width; ++i) {
     30      char c; in >> c;
     31      filter[graph(i, j)] = (c == '.');
     32    }
     33  }
     34
     35  typedef NodeSubGraphAdaptor<GridGraph,
     36    GridGraph::NodeMap<bool> > FilteredGraph;
     37
     38  FilteredGraph filtered(graph, filter);
     39
     40  Bfs<FilteredGraph> bfs(filtered);
     41  std::cout << "The length of shortest path: " <<
     42    bfs.run(start, stop) << std::endl;
     43
    1444  GridGraph::NodeMap<xy<double> > coord(graph);
    1545  for (int i = 0; i < graph.width(); ++i) {
    1646    for (int j = 0; j < graph.height(); ++j) {
    17       coord[graph(i, j)] = xy<double>(i * 10.0, j * 10.0);
     47      coord[graph(i, j)] = xy<double>( i * 10.0, j * 10.0);
    1848    }
    1949  }
    20   graphToEps(graph, "grid_graph.eps").scaleToA4().
     50 
     51  FilteredGraph::EdgeMap<Color> color(filtered, Color(0.0, 0.0, 0.0));
     52 
     53  for (GridGraph::Node node = stop;
     54       node != start; node = bfs.predNode(node)) {
     55    color[bfs.pred(node)] = Color(1.0, 0.0, 0.0);
     56  }
     57 
     58  graphToEps(filtered, "grid_graph.eps").scaleToA4().
    2159    title("Grid graph").
    2260    copyright("(C) 2005 LEMON Project").
     
    2563    nodeScale(.45).
    2664    drawArrows().
     65    edgeColors(color).
    2766    run();
     67 
     68  std::cout << "The shortest path is written to grid_graph.eps" << std::endl;
     69
    2870  return 0;
    2971}
Note: See TracChangeset for help on using the changeset viewer.