Given a directed graph $D=(A,V)$ , find a smallest set $S\subseteq V$ which satisfies that for every vertex $v\in V$ there exists a vertex $s\in S$ such that there is a directed path from $s$ to $v$ in $D$.
This is an optimization problem.
I think it needs some algorithm to solve it. I tried to consider the acyclic case but I was not convinced with my argument because it should also work for cyclic case as well. Any comment. Thanks!
Hint: find the strongly connected components of $D$. Note that you do not need more than one vertex from any strongly connected component in $S$ (if you have two vertices in the same SCC, $s_1$ and $s_2$, then there is a path from $s_1$ to $v$ if and only if there is a path from $s_2$ to $v$.
However, you (normally) don't need to have vertices from all SCCs of $D$. Find the condensation of $D$, that is the graph whose vertices are SCCs of $D$ with an edge from $C_1$ to $C_2$ if $D$ has an edge between some vertex in $C_1$ and some vertex in $C_2$. Which vertices of the condensation correspond to SCCs that you have to use vertices from?