Replace all vectors with maps (red-black tree)


- keep offset -> actual source id map (easier to port)





Multimap: 
Distance to local id of source: get all things of particular distance using equal range
using that, find lowest unsent index out of that range(logarithmic operation)

Observation

first map->

distance to set of offsets: check if sent for both forward and backward
problem: eveyr time it gets updated, you have to update this reverse map, whcih is painful



backward phase:

backward iterate over distances and backward over their sets, send them out as rounds match....

