State an algorithm for 2^20 computers, faster than an algorithm for 1 computer, that computes the distance from each vertex to vertex 0 in a directed acyclic graph with 2^40 vertices and 2^45 edges. The graph is given as an array of 2^25 edges on each computer. Each edge is a pair of vertices. Each vertex is an integer between 0 and 2^40-1. Analyze the cost of your algorithm in two ways: the time per computer, measured as the number of simple operations, and the communication per computer, measured as the number of bits transmitted. Note that, if a message is sent by one computer to all computers, that message has been transmitted 2^20-1 times.