Any bipartite graph has a matching that covers each vertex of maximum degree I need to prove following lemma:

Any bipartite graph has a matching that covers each vertex of maximum
  degree

Any help will be appreciated.

Let $G$ be our bipartite graph with bipartition $X,Y$ and let the maximum degree be $k$.
Let $S_X$ be the set containing exactly all vertices of degree $k$ in $X$ and
$S_Y$ the set containing all vertices of degree $k$ in $Y$.
Let $A\subset S_X$ and $N(A)$ be the neighbours of $A$.
Exactly $k|A|$ edges are leaving vertices of $A$, so $k|A|$ vertices must
be arriving at vertices of $N(A)$.
Since each vertex of $N(A)$ has degree at most $k$, $N(A)$ must have at least $|A$| vertices.
So Hall's condition is satisfied and there is a matching $M_X$ of $S_X$.
In the same way we find a matching $M_Y$ of $S_Y$.
Now let $G'$ be the subgraph that consists of exactly the edges of $M_X$ and $M_Y$.
Let $T_X$ be the vertices of $X$ that are matched using $M_Y$ and
$T_Y$ vertices that are matched using $M_X$ (draw a picture or you will get confused!).
Take an arbitrary vertex $v$ in $S_Y-T_Y$. It has degree 1 so it must start a path.
This path must start with an edge of $M_Y$.
The next vertex on that path, $w$, will certainly be in $T_X$.
If $w$ is not in $S_X$ the path ends (we just traveled an edge of $M_Y$ and we can only
continue along an edge of $M_X$ if $w$ is in $S_X$).
If $w$ is in $S_X$ we continue along an edge of $M_X$ that takes us to a vertex $u$ of $T_Y$.
And here we repeat the argument: if $u$ is not in $S_Y$ the path ends here, otherwise
we continue to a vertex in $T_X$. So we see that the endpoint $t$ of our path must be in $T_X-S_X$ or in $T_Y-S_Y$.
In the first case the last edge must have been an edge of $M_Y$ and we have an augmenting path for $M_X$.
If we swap the edges on this path from $M_X$ to $M_Y$ and v.v. our 'new' $M_X$ still matches
everything from $S_X$, and everything from $S_Y$ it matched before, but also $v$.
In the second case the last edge must have been an edge of $M_X$. If we swap edges on this path
our 'new' $M_X$ still matches $S_X$, one vertex less in $T_Y-S_Y$, but one vertex more ($v$) in $S_Y-T_Y$.
Now simply perform this operation for all vertices $v$ of $S_Y-T_Y$ and we end up with a
matching that matches all of $S_X$ and all of $S_Y$, as desired.
