== Step 2-4 For steps 2-4, I calculated all of each process' outgoing nodes, sorted it in order and used its sorted position as a way to identify which nodes are being sent. This saves an extra communication and lets me index the same items for each loop. == Step 5 I exchanged data using the unstructured communication approach, doing an all-to-all transfer. To read the result efficiently, I tried using the approach given in the slides. However, this was taking a long time (up to 45 seconds for the 10,000 case) and I tried using STL's `std::map`. This proved to be orders of magnitude faster