Changeset 220:7deda4d6a07a in lemon-0.x
- Timestamp:
- 03/20/04 21:06:23 (21 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@316
- Location:
- src/work/jacint
- Files:
-
- 1 deleted
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
src/work/jacint/dijkstra.h
r217 r220 81 81 82 82 Node v=heap.top(); 83 T oldvalue=heap [v];83 T oldvalue=heap.get(v); 84 84 heap.pop(); 85 85 distance.set(v, oldvalue); … … 95 95 heap.push(w,oldvalue+length[e]); 96 96 predecessor.set(w,e); 97 } else if ( oldvalue+length[e] < heap [w]) {97 } else if ( oldvalue+length[e] < heap.get(w) ) { 98 98 predecessor.set(w,e); 99 99 heap.decrease(w, oldvalue+length[e]); -
src/work/jacint/fib_heap.h
r217 r220 144 144 145 145 146 147 148 146 PrioType& operator[](const Item& it) { 149 147 return container[iimap[it]].prio; 150 148 } 149 151 150 152 151 const PrioType& operator[](const Item& it) const { … … 154 153 } 155 154 156 // const PrioType get(const Item& it) const { 157 // return container[iimap[it]].prio; 158 // } 159 155 156 const PrioType get(const Item& it) const { 157 return container[iimap[it]].prio; 158 } 159 160 160 void pop() { 161 161 /*The first case is that there are only one root.*/ -
src/work/jacint/makefile
r211 r220 1 1 CXX3 := $(shell type -p g++-3.3 || type -p g++-3.2 || type -p g++-3.0 || type -p g++-3 || echo g++) 2 2 CXX2 = g++-2.95 3 CXXFLAGS = -W -Wall -ansi -pedantic 3 CXXFLAGS = -W -Wall -ansi -pedantic -O3 -I. -I.. -I../marci -I../alpar -I../../include 4 4 LEDAROOT ?= /ledasrc/LEDA-4.1 5 5 … … 12 12 13 13 preflow: 14 $(CXX3) $(CXXFLAGS) -O3 -I. -I.. -I../marci -I../alpar-o preflow preflow.cc14 $(CXX3) $(CXXFLAGS) -o preflow preflow.cc 15 15 16 16 dijkstra: 17 $(CXX3) $(CXXFLAGS) -O3 -I. -I.. -I../marci -I../alpar-o dijkstra dijkstra.cc17 $(CXX3) $(CXXFLAGS) -o dijkstra dijkstra.cc 18 18 19 19 prim: 20 $(CXX3) $(CXXFLAGS) -O3 -I. -I.. -I../marci -I../alpar-o prim prim.cc20 $(CXX3) $(CXXFLAGS) -o prim prim.cc 21 21 22 22 clean: -
src/work/jacint/preflow.cc
r211 r220 2 2 #include <fstream> 3 3 4 #include <smart_graph.h> 4 5 #include <list_graph.h> 5 6 #include <dimacs.h> … … 12 13 // read_dimacs_demo < dimacs_max_flow_file 13 14 int main(int, char **) { 14 typedef ListGraph::Node Node;15 typedef ListGraph::EdgeIt EdgeIt;15 typedef SmartGraph::Node Node; 16 typedef SmartGraph::EdgeIt EdgeIt; 16 17 17 ListGraph G;18 SmartGraph G; 18 19 Node s, t; 19 ListGraph::EdgeMap<int> cap(G);20 SmartGraph::EdgeMap<int> cap(G); 20 21 readDimacsMaxFlow(std::cin, G, s, t, cap); 21 22 … … 25 26 26 27 for ( int i=1; i!=11; ++i ) { 27 ListGraph::EdgeMap<int> flow(G);28 SmartGraph::EdgeMap<int> flow(G); 28 29 double pre_time=currTime(); 29 Preflow< ListGraph, int> max_flow_test(G, s, t, cap, flow);30 Preflow<SmartGraph, int> max_flow_test(G, s, t, cap, flow); 30 31 max_flow_test.run(); 31 32 double post_time=currTime(); … … 33 34 } 34 35 35 ListGraph::EdgeMap<int> flow(G);36 Preflow< ListGraph, int> max_flow_test(G, s, t, cap, flow);36 SmartGraph::EdgeMap<int> flow(G); 37 Preflow<SmartGraph, int> max_flow_test(G, s, t, cap, flow); 37 38 max_flow_test.run(); 38 39 39 ListGraph::NodeMap<bool> cut(G);40 SmartGraph::NodeMap<bool> cut(G); 40 41 max_flow_test.minCut(cut); 41 42 int min_cut_value=0; 42 43 EdgeIt e; 43 44 for(G.first(e); G.valid(e); G.next(e)) { 44 if (cut .get(G.tail(e)) && !cut.get(G.head(e))) min_cut_value+=cap.get(e);45 if (cut[G.tail(e)] && !cut[G.head(e)]) min_cut_value+=cap[e]; 45 46 } 46 47 47 ListGraph::NodeMap<bool> cut1(G);48 SmartGraph::NodeMap<bool> cut1(G); 48 49 max_flow_test.minMinCut(cut1); 49 50 int min_min_cut_value=0; 50 51 for(G.first(e); G.valid(e); G.next(e)) { 51 if (cut .get(G.tail(e)) && !cut.get(G.head(e)))52 min_min_cut_value+=cap .get(e);52 if (cut[G.tail(e)] && !cut[G.head(e)]) 53 min_min_cut_value+=cap[e]; 53 54 } 54 55 55 ListGraph::NodeMap<bool> cut2(G);56 SmartGraph::NodeMap<bool> cut2(G); 56 57 max_flow_test.maxMinCut(cut2); 57 58 int max_min_cut_value=0; 58 59 for(G.first(e); G.valid(e); G.next(e)) { 59 if (cut2 .get(G.tail(e)) && !cut2.get(G.head(e)))60 max_min_cut_value+=cap .get(e);60 if (cut2[G.tail(e)] && !cut2[G.head(e)]) 61 max_min_cut_value+=cap[e]; 61 62 } 62 63 -
src/work/jacint/prim.cc
r211 r220 2 2 #include <fstream> 3 3 4 #include <smart_graph.h> 4 5 #include <list_graph.h> 5 6 #include <dimacs.h> … … 13 14 14 15 int main(int, char **) { 15 typedef ListGraph::Node Node;16 typedef SmartGraph::Node Node; 16 17 17 ListGraph G;18 SmartGraph G; 18 19 Node s, t; 19 ListGraph::EdgeMap<int> cap(G);20 SmartGraph::EdgeMap<int> cap(G); 20 21 readDimacsMaxFlow(std::cin, G, s, t, cap); 21 22 … … 23 24 24 25 double pre_time=currTime(); 25 Prim< ListGraph, int, FibHeap<ListGraph::Node, int,26 ListGraph::NodeMap<int> > > prim_test(G, cap);26 Prim<SmartGraph, int, FibHeap<SmartGraph::Node, int, 27 SmartGraph::NodeMap<int> > > prim_test(G, cap); 27 28 prim_test.run(); 28 29 double post_time=currTime(); … … 32 33 33 34 pre_time=currTime(); 34 Prim< ListGraph, int, BinHeap<ListGraph::Node, int,35 ListGraph::NodeMap<int> > > prim_test2(G, cap);35 Prim<SmartGraph, int, BinHeap<SmartGraph::Node, int, 36 SmartGraph::NodeMap<int> > > prim_test2(G, cap); 36 37 prim_test2.run(); 37 38 post_time=currTime();
Note: See TracChangeset
for help on using the changeset viewer.