1.1 --- a/src/lemon/bin_heap.h Mon Nov 08 08:40:37 2004 +0000
1.2 +++ b/src/lemon/bin_heap.h Mon Nov 08 15:22:39 2004 +0000
1.3 @@ -32,6 +32,11 @@
1.4 /// @{
1.5
1.6 /// A Binary Heap implementation.
1.7 +
1.8 + ///\todo Please document...
1.9 + ///
1.10 + ///\sa FibHeap
1.11 + ///\sa Dijkstra
1.12 template <typename Item, typename Prio, typename ItemIntMap,
1.13 typename Compare = std::less<Prio> >
1.14 class BinHeap {
1.15 @@ -67,11 +72,15 @@
1.16 ItemIntMap &iim;
1.17
1.18 public:
1.19 + ///\e
1.20 BinHeap(ItemIntMap &_iim) : iim(_iim) {}
1.21 + ///\e
1.22 BinHeap(ItemIntMap &_iim, const Compare &_comp) : comp(_comp), iim(_iim) {}
1.23
1.24
1.25 + ///\e
1.26 int size() const { return data.size(); }
1.27 + ///\e
1.28 bool empty() const { return data.empty(); }
1.29
1.30 private:
1.31 @@ -101,13 +110,16 @@
1.32 }
1.33
1.34 public:
1.35 + ///\e
1.36 void push(const PairType &p) {
1.37 int n = data.size();
1.38 data.resize(n+1);
1.39 bubble_up(n, p);
1.40 }
1.41 + ///\e
1.42 void push(const Item &i, const Prio &p) { push(PairType(i,p)); }
1.43
1.44 + ///\e
1.45 Item top() const {
1.46 return data[0].first;
1.47 }
1.48 @@ -116,19 +128,23 @@
1.49 return data[0].second;
1.50 }
1.51
1.52 + ///\e
1.53 void pop() {
1.54 rmidx(0);
1.55 }
1.56
1.57 + ///\e
1.58 void erase(const Item &i) {
1.59 rmidx(iim[i]);
1.60 }
1.61
1.62 + ///\e
1.63 Prio operator[](const Item &i) const {
1.64 int idx = iim[i];
1.65 return data[idx].second;
1.66 }
1.67
1.68 + ///\e
1.69 void set(const Item &i, const Prio &p) {
1.70 int idx = iim[i];
1.71 if( idx < 0 ) {
1.72 @@ -142,15 +158,18 @@
1.73 }
1.74 }
1.75
1.76 + ///\e
1.77 void decrease(const Item &i, const Prio &p) {
1.78 int idx = iim[i];
1.79 bubble_up(idx, PairType(i,p));
1.80 }
1.81 + ///\e
1.82 void increase(const Item &i, const Prio &p) {
1.83 int idx = iim[i];
1.84 bubble_down(idx, PairType(i,p), data.size());
1.85 }
1.86
1.87 + ///\e
1.88 state_enum state(const Item &i) const {
1.89 int s = iim[i];
1.90 if( s>=0 )