Describe a linear time algorithm that takes a directed graph as input and returns the number of vertices that can be reached from every other vertex. Explain why your algorithm runs in linear time (O(V2) on an adjacency matrix; O(E+V) on an adjacency list).