Suppose we have a finite set $A$ whose elements are subsets of another finite set $B$ $\left (\epsilon \in A \implies \epsilon \subseteq B \right )$. Next, suppose that we want to select up to one element from each set $\epsilon \in A$ such that no two elements selected from any of these sets $\epsilon$ are equal. How would we go about finding the maximum number of elements that we can select from these sets such that these conditions are satisfied?
Obviously, this maximum number of elements is bounded by the minimum of the size of $A$ and the size of $B$, but suppose we know the contents of each of the sets $\epsilon$. Is there some method that one can use to obtain more information about this maximum in a timely manner, or does this problem take NP time to solve?
You can solve this using max flow in polynomial time.
Consider a directed graphs with nodes $\{S, F\} \cup A \cup B$. The edges, all of which have weight 1, are $\{S \to a | a \in A\} \cup \{a \to b | b \in a, a \in A\} \cup \{b \to F | b \in B\}$.
Then the maximum flow from $S$ to $F$ is the answer to your problem.
Note that for max flow, if all edge weights of the graph are integers, the maximum flow will have integer flow across every edge. This is why this reduction works.
Edit:
In fact, this can be nicely viewed as a special case of maximum bipartite matching.