Is there a name/algorithm for this problem related to set cover and CSP?
Just to be sure, I assume that $\mathcal{G}^* = 2^\mathcal{G}$, i.e. that $\mathcal{G}^*$ is the power set of $\mathcal{G}$.

Alright, we can use the following flow network $(V,E,\text{cap})$: let $V = \{s\} \uplus \mathcal{T} \uplus \mathcal{G} \uplus \{t\}$. Now let $E = \{(s, c) : c \in \mathcal{T}\} \uplus \{(g,t) : g \in \mathcal{G}\} \uplus \{(c,g) : c\in \mathcal{T} \wedge g \in \mathcal{G} \wedge g \in \mathcal{M}(c)\}$. Finally, we need capacity constraints:

\begin{align}\text{cap}(s,c) &amp;= \min\{|\mathcal{M}(c)|,2\} \qquad &amp;\text{(every class covers at most 2 requirements)}\\
\text{cap}(g,t) &amp;= 1\\
\text{cap}(c,g) &amp;= 1
\end{align}

Now we run maxflow to find an $s-t-$flow and we are done; while there may be fractional maximum flows, finding an integral one is easily done via an augmenting path algorithm (since all capacities are integral).



The problem reminds me of maximum matching, but I can't reduce it to matching off the cuff. Maybe some generalization, not sure.