1.1 --- a/demo/grid_graph_demo.cc Wed Feb 22 12:45:59 2006 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,102 +0,0 @@
1.4 -/* -*- C++ -*-
1.5 - *
1.6 - * This file is a part of LEMON, a generic C++ optimization library
1.7 - *
1.8 - * Copyright (C) 2003-2006
1.9 - * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
1.10 - * (Egervary Research Group on Combinatorial Optimization, EGRES).
1.11 - *
1.12 - * Permission to use, modify and distribute this software is granted
1.13 - * provided that this copyright notice appears in all copies. For
1.14 - * precise terms see the accompanying LICENSE file.
1.15 - *
1.16 - * This software is provided "AS IS" with no warranty of any kind,
1.17 - * express or implied, and with no claim as to its suitability for any
1.18 - * purpose.
1.19 - *
1.20 - */
1.21 -
1.22 -#include <lemon/grid_graph.h>
1.23 -#include <lemon/graph_adaptor.h>
1.24 -#include <lemon/graph_to_eps.h>
1.25 -#include <lemon/bfs.h>
1.26 -#include <lemon/xy.h>
1.27 -
1.28 -#include <iostream>
1.29 -#include <fstream>
1.30 -
1.31 -///\ingroup demos
1.32 -///\file
1.33 -///\brief Labirinth example with grid graph.
1.34 -///
1.35 -/// Labirinth example with grid graph.
1.36 -///
1.37 -/// The input file is:
1.38 -///
1.39 -/// \include grid_graph_demo.in
1.40 -///
1.41 -/// The result:
1.42 -///
1.43 -/// \image html grid_graph_demo.png
1.44 -/// \image latex grid_graph_demo.eps "The labirinth" width=\textwidth
1.45 -///
1.46 -/// The source:
1.47 -///
1.48 -/// \include grid_graph_demo.cc
1.49 -
1.50 -using namespace lemon;
1.51 -using namespace std;
1.52 -
1.53 -int main() {
1.54 - ifstream in("grid_graph_demo.in");
1.55 - int width, height;
1.56 - in >> width >> height;
1.57 - int start_x, start_y;
1.58 - in >> start_x >> start_y;
1.59 - int stop_x, stop_y;
1.60 - in >> stop_x >> stop_y;
1.61 -
1.62 - GridGraph graph(width, height);
1.63 - GridGraph::Node start = graph(start_x - 1, start_y - 1);
1.64 - GridGraph::Node stop = graph(stop_x - 1, stop_y - 1);
1.65 - GridGraph::NodeMap<bool> filter(graph);
1.66 -
1.67 - for (int j = 0; j < height; ++j) {
1.68 - in >> ws;
1.69 - for (int i = 0; i < width; ++i) {
1.70 - char c; in >> c;
1.71 - filter[graph(i, j)] = (c == '.');
1.72 - }
1.73 - }
1.74 -
1.75 - typedef NodeSubGraphAdaptor<GridGraph,
1.76 - GridGraph::NodeMap<bool> > FilteredGraph;
1.77 -
1.78 - FilteredGraph filtered(graph, filter);
1.79 -
1.80 - Bfs<FilteredGraph> bfs(filtered);
1.81 - std::cout << "The length of shortest path: " <<
1.82 - bfs.run(start, stop) << std::endl;
1.83 -
1.84 - FilteredGraph::EdgeMap<bool> path(filtered, false);
1.85 -
1.86 - for (GridGraph::Node node = stop;
1.87 - node != start; node = bfs.predNode(node)) {
1.88 - path[bfs.predEdge(node)] = true;
1.89 - }
1.90 -
1.91 - graphToEps(filtered, "grid_graph_demo.eps").scaleToA4().
1.92 - title("Grid graph").
1.93 - copyright("(C) 2006 LEMON Project").
1.94 - coords(scaleMap(indexMap(graph), 10)).
1.95 - enableParallel().
1.96 - nodeScale(0.5).
1.97 - drawArrows().
1.98 - edgeColors(composeMap(ColorSet(), path)).
1.99 - run();
1.100 -
1.101 - std::cout << "The shortest path is written to grid_graph_demo.eps"
1.102 - << std::endl;
1.103 -
1.104 - return 0;
1.105 -}