| 558 | |
| 559 | template <typename T> |
| 560 | void |
| 561 | Tree<T>::update(Node *node, uint32_t sent) |
| 562 | { |
| 563 | while (node->parent != nullptr) { |
| 564 | node->point += sent * K / (node->weight + 1); |
| 565 | |
| 566 | if (node->queued) { |
| 567 | node->parent->queue->update(node->entry, true); |
| 568 | } else { |
| 569 | node->parent->queue->push(node->entry); |
| 570 | node->queued = true; |
| 571 | } |
| 572 | |
| 573 | node = node->parent; |
| 574 | } |
| 575 | } |
| 576 | |
| 577 | template <typename T> |
| 578 | uint32_t |