Graph-theoretic techniques for parallel, distributed, and sequential computation