1. E, A, B, C, D 2. A B | | C D | E 3. A: dfsnum = 1, lowlink = 1 B: dfsnum = 3, lowlink = 3 C: dfsnum = 2, lowlink = 1 D: dfsnum = 4, lowlink = 3 E: dfsnum = 5, lowlink = 3 4. {A, C}, {B, D, E} 5. Because Tarjan's algorithm needs only the outgoing edges from each vertex, while Kosaraju's needs both incoming and outgoing edges. In a web graph, only the outgoing edges are directly available; we'd have to make an in-memory copy of the graph that includes lists of both incoming and outgoing edges in order to apply Kosaraju's algorithm.