Minimal-size extending set in a directed graph
There is a linear time algorithm.

Contract all strongly connected components, then you get a DAG.
Find all the source vertex in the DAG. For each source vertex in the DAG, pick a single vertex from the strongly connected component represented by the source vertex.