DP, part 1: executed at each route 𝑗 ∈ 𝑁
Initialization
 Set 𝐡 0 𝑗 = πœ™ , πœ‚ 0 𝑗 < 1 , 𝑝 1 𝑗 = 𝛼 ( | 𝐡 𝑗 | + β„Ž 𝑗 ) .
repeat
if   πœ‚ 𝑗 𝑑 βˆ’ 1 < 1 (i.e., unbalanced)
  Broadcast its price 𝑝 𝑑 𝑗 to each source node 𝑖 ∈ 𝐡 𝑗 .
else
Broadcast its price 𝑝 𝑑 𝑗 with a “balanced” signal to each
  source node 𝑖 ∈ 𝐡 𝑗 .
End  if
Wait for responses from all source nodes in 𝐡 𝑗 .
if   | 𝐢 𝑑 𝑗 | > 𝑝 𝑑 𝑗 / 𝛼 βˆ’ β„Ž 𝑗 βˆ’ | 𝐡 𝑗 𝑑 βˆ’ 1 | + | 𝐿 𝑑 𝑗 |
    Randomly choose a subset 𝐴 𝑑 𝑗 of 𝐢 𝑑 𝑗 , such that
    supply-demand is balanced.
    Set 𝐡 𝑑 𝑗 = 𝐡 𝑗 𝑑 βˆ’ 1 ⋃ 𝐴 𝑑 𝑗 ⧡ 𝐿 𝑑 𝑗 .
   else
    Set 𝐡 𝑑 𝑗 = 𝐡 𝑗 𝑑 βˆ’ 1 ⋃ 𝐢 𝑑 𝑗 ⧡ 𝐿 𝑑 𝑗 .
   End  if
  Broadcast its decision to each source node 𝑖 ∈ 𝐡 𝑗 .
   if   πœ‚ 𝑑 𝑗 < 1 and | 𝐢 𝑑 𝑗 | + | 𝐿 𝑑 𝑗 | = = 0
     Set 𝑝 𝑗 𝑑 + 1 = 𝑝 𝑑 𝑗 βˆ’ 𝛼 .
   else
     Set 𝑝 𝑗 𝑑 + 1 = 𝑝 𝑑 𝑗 .
     𝑑 = 𝑑 + 1 .
   End  if
until   𝑁 𝑑 = 1 or πœ‚ 𝑑 𝑗 = = 1 for each 𝑗 ∈ 𝑁 (i.e., balance its
Supply-demand).
𝐿 𝑑 𝑗 : set of source nodes that leave route 𝑗 during iteration 𝑑 .
𝐢 𝑑 𝑗 : set of source nodes that turn to route 𝑗 during iteration 𝑑 .
Algorithm 1: