Consider the following problem, of which I am pretty certain that it is polynomially solvable.
Given some arbitrary bipartite Graph $G=(L\cup R,E)$ and some vector $b\in\mathbb{N}^{|L|}$ with $\sum_{i=1}^{|L|} b(i)\geq|R|$ (so basically each "left" vertex gets some capacity which means it can at most match $b(i)$ vertices from the other side).
The question is: Is there a Matching such that each $v\in L$ gets matched at most $b(i)$ times and matches/covers each vertex $r\in R$ exactly once.
What algorithm could solve this in polynomial runtime? Can you recommend some useful literature?