Changeset 6:b63d1bc367f7 in lemon0.x for src/include
 Timestamp:
 12/16/03 17:19:08 (18 years ago)
 Branch:
 default
 Phase:
 public
 Convert:
 svn:c9d7d8f590d60310b91f818b3a526b0e/lemon/trunk@19
 Location:
 src/include
 Files:

 2 edited
Legend:
 Unmodified
 Added
 Removed

src/include/bfs.h
r5 r6 241 241 242 242 // bfs algorithm class 243 244 template<class G> //the default traits 245 class default_bfs_T 246 { 247 public: 248 249 typedef G Graph; 250 typedef typename G::OutEdgeIterator SearchEdgeIterator; 251 252 typedef typename G::NodeMap<bool> visited_map_t; 253 typedef typename G::NodeMap<typename G::EdgeIterator> tree_map_t; 254 255 typedef typename G::NodeMap<int> dist_map_t; //node>int (W) 256 typedef typename G::NodeMap<int> priority_map_t; //node>int (W) 257 }; 258 243 259 template<class T> 244 260 class Bfs 245 261 { 246 262 public: 247 typedef typename T::Graph _tGraph;263 typedef typename T::Graph Graph; 248 264 typedef typename Graph::NodeIterator NodeIterator; 249 265 typedef typename Graph::EdgeIterator EdgeIterator; 
src/include/graph.h
r3 r6 5 5 //inline void *operator new(size_t s, void *p) { return p; } 6 6 #include <new> 7 #include <vector> 7 8 8 9 namespace NEGRO … … 41 42 class AllEdgeIterator; 42 43 43 class FirstAnythingTypeNode; 44 class FirstAnythingTypeNode; //Required by the unified First() function. 44 45 45 46 friend class NodeIterator; … … 392 393 393 394 Graph() : _FST(this) {} 395 396 // MAPS: 397 template<class T> class NodeMap 398 { 399 Graph<N,E> *G; 400 vector<T> map; 401 402 public: 403 typedef T value_type; 404 void Set(NodeIterator i, const T &t) {map[i.Index()]=t;} 405 T &Get(NodeIterator i) {return map[i.Index()];} 406 T &operator[](NodeIterator i) {return map[i.Index()];} 407 408 void update() { map.resize(G>OldGraph<N,E>::NodeMax());} 409 410 NodeMap(Graph<N,E> &Gr) : map(Gr.OldGraph<N,E>::NodeMax()) { G=&Gr ;} 411 412 }; 413 414 template<class T> class EdgeMap 415 { 416 Graph<N,E> *G; 417 vector<T> map; 418 419 public: 420 typedef T value_type; 421 void Set(NodeIterator i, const T &t) {map[i.Index()]=t;} 422 T &Get(NodeIterator i) {return map[i.Index()];} 423 T &operator[](NodeIterator i) {return map[i.Index()];} 424 425 void update() 426 { map.resize(Gr.OldGraph<N,E>::edge_block_num*EDGE_BLOCK_SIZE);} 427 428 EdgeMap(Graph<N,E> &Gr) 429 :map(Gr.OldGraph<N,E>::edge_block_num*EDGE_BLOCK_SIZE) 430 { G=&Gr ;} 431 432 }; 433 394 434 }; 395 435
Note: See TracChangeset
for help on using the changeset viewer.