You may be looking for topological sorting .
First we do a topological sorting and get the order of the vertices in the graph according to this type, let it be v1,v2,...,vn .
Using BFS, you can leave only the vertices reachable from v (filter the rest) and repeat them in topological sort order.
This is O(|V|+|E|) , which in your case is O(|V|) (relaxation of each vertex will be pointed to by at most two vertices suggests |E| <= 2|V| , and thus , O(|V|+|E|) <= O|V|+2|V|) = O(3|V|) = O(|V|)
source share