You need two things: a way to mark positions as winning or losing, and a way to process vertices in reverse topological order. Use a boolean array where true means winning and false means losing. Process vertices after all their successors have been processed.
For each vertex, iterate through outgoing edges. If any edge leads to a losing position, mark the current vertex as winning. Otherwise, mark it as losing.