You should perform the DFS to find some path between the source and the sink. Then, when the dfs is retuning, you should add a flow
Here's an example. The function "send" is a DFS. Notice that I pass along with the DFS the minimum capacity value found during the search:
https://github.com/juanplopes/icpc/blob/master/uva/820.cpp
int send(int s, int t, int minn) {
V[s] = true;
if (s==t) return minn;
for(int i=1; i<=n; i++) {
int capacity = G[s][i]-F[s][i];
if (!V[i] && capacity > 0) {
if (int sent = send(i, t, min(minn, capacity))) {
F[s][i] += sent;
F[i][s] -= sent;
return sent;
}
}
}
return 0;
}