[step:Identify integral flows with matchings of the same cardinality]
Let $f: \mathcal{A}_G \to \{0,1\}$ be an integral feasible flow on $N_G$. Define
\begin{align*}
M_f := \{(a,b) \in E : f(a,b)=1\}.
\end{align*}
For each $a \in A$, the capacity constraint on $(s,a)$ and flow conservation at $a$ imply
\begin{align*}
\sum_{\{b \in B : (a,b)\in E\}} f(a,b) = f(s,a) \leq 1.
\end{align*}
For each $b \in B$, the capacity constraint on $(b,t)$ and flow conservation at $b$ imply
\begin{align*}
\sum_{\{a \in A : (a,b)\in E\}} f(a,b) = f(b,t) \leq 1.
\end{align*}
Thus no two edges in $M_f$ share a vertex, so $M_f$ is a matching. Also, summing flow conservation over all vertices $a \in A$ gives
\begin{align*}
|M_f| = \sum_{(a,b)\in E} f(a,b) = \sum_{a\in A} f(s,a) = |f|.
\end{align*}
Conversely, let $M \subset E$ be a matching. Define a map $f_M: \mathcal{A}_G \to \{0,1\}$ as follows. For each $a \in A$, set $f_M(s,a):=1$ if $a$ is incident to an edge of $M$, and set $f_M(s,a):=0$ otherwise. For each edge $(a,b) \in E$, set $f_M(a,b):=1$ if $(a,b) \in M$, and set $f_M(a,b):=0$ otherwise. For each $b \in B$, set $f_M(b,t):=1$ if $b$ is incident to an edge of $M$, and set $f_M(b,t):=0$ otherwise.
Because $M$ is a matching, each vertex is incident to at most one edge of $M$, so $f_M$ satisfies the capacity constraints and flow conservation at every vertex in $A \cup B$. Hence $f_M$ is a feasible integral flow and
\begin{align*}
|f_M| = |M|.
\end{align*}
Therefore maximum-cardinality matchings in $G$ and maximum-value integral flows in $N_G$ have the same value, and a maximum matching is obtained by computing a maximum integral flow and selecting the middle arcs carrying one unit of flow. This proves that maximum bipartite matching is solvable in polynomial time.
[/step]