refactor and add node-disjoint paths algorithm
yay, no more exceptions as unexceptional control flow