7 #include "../safeguards.h" 
    9 typedef std::queue<NodeID> NodeList;
 
   72     return (to.
Supply() == 0 || to.UndeliveredSupply() > 0) && to.
Demand() > 0;
 
  133   if (job[from_id].Demand() > 0) {
 
  134     uint demand_back = demand_forw * this->
mod_size / 100;
 
  135     uint undelivered = job[to_id].UndeliveredSupply();
 
  136     if (demand_back > undelivered) {
 
  137       demand_back = undelivered;
 
  138       demand_forw = 
max(1U, demand_back * 100 / this->
mod_size);
 
  156   job[from_id].DeliverSupply(to_id, demand_forw);
 
  164 template<
class Tscaler>
 
  169   uint num_supplies = 0;
 
  170   uint num_demands = 0;
 
  172   for (NodeID node = 0; node < job.
Size(); node++) {
 
  173     scaler.AddNode(job[node]);
 
  174     if (job[node].Supply() > 0) {
 
  178     if (job[node].Demand() > 0) {
 
  184   if (num_supplies == 0 || num_demands == 0) 
return;
 
  189   scaler.SetDemandPerNode(num_demands);
 
  192   while (!supplies.empty() && !demands.empty()) {
 
  193     NodeID from_id = supplies.front();
 
  196     for (uint i = 0; i < num_demands; ++i) {
 
  197       assert(!demands.empty());
 
  198       NodeID to_id = demands.front();
 
  200       if (from_id == to_id) {
 
  202         if (demands.empty() && supplies.empty()) 
return;
 
  208       int32 supply = scaler.EffectiveSupply(job[from_id], job[to_id]);
 
  222       uint demand_forw = 0;
 
  223       if (divisor <= supply) {
 
  227         demand_forw = supply / divisor;
 
  228       } 
else if (++chance > this->
accuracy * num_demands * num_supplies) {
 
  234       demand_forw = 
min(demand_forw, job[from_id].UndeliveredSupply());
 
  236       scaler.SetDemands(job, from_id, to_id, demand_forw);
 
  238       if (scaler.HasDemandLeft(job[to_id])) {
 
  244       if (job[from_id].UndeliveredSupply() == 0) 
break;
 
  247     if (job[from_id].UndeliveredSupply() != 0) {
 
  248       supplies.push(from_id);
 
  270     this->
mod_dist = 100 + over100 * over100;
 
  273   switch (settings.GetDistributionType(cargo)) {