An augmenting path with respect to a given flow f is a
Directed path from s to t which consists of edges from G, but not necessarily in same direction. Each edge on path is either:
forward edge: (u,v) in same direction as G and f(u,v) < c(u,v). (c(u,v)-f(u,v) called slack) => has room for more flow.
backward edge: (u,v) in opposite direction in G (i.e., (v,u) in E) and f(u,v) ɬ => can borrow flow from such an edge.