Actually max-flow will be able to link the things correctly. There will be a second iteration where the flow from A[1] could go to B[0] while reversing the flow going in the link from A[0] to B[0].
You can look up the Ford-Fulkerson algorithm it can do that.
EDIT :
Assuming you start with a source node S (LINK(S,A0) and LINK(S,A1)) (and an ending node F) if you apply the algorithm on the first iteration you will end up with A0->B0 like you said. I'll go into details for the second iteration.
1) "S" ; T = {S} ; E = {}
- Label(A1) = {S+, 1}, T = {S A1}
- E = {S}
2) "A1" ; T = {S A1} ; E = {S}
- Label(B0) = {A1+, 1}, T = {S A1 B0}
- E = {S A1}
3) "B0" ; T = {S A1 B0} ; E = {S A1}
- Label(A0) = {B0-, 1} ; T = {S A1 B0 A0}
- E = {S A1 B0}
4) "A0" ; T = {S A1 B0 A0} ; E = {S A1 B0}
- Label(B1) = {A0+, 1} ; T = {S A1 B0 A0 B1}
- E = {S A1 B0 A0}
- Don't inspect "S" because it is already in T!
5) "B1" ; T = {S A1 B0 A0 B1}
- Label(F) = {B1+, 1} ; T = {S A1 B0 A0 B1 F}
- E = {S A1 B0 A0 B1}
And it's over, the flow is now maximised.