```cppll dfs(int x, ll val) {
// cout<<'#';
if (!val || x == t) return val;
int temp = 0, to, f;
for (int i = cur[x]; i; i = a[i].next) {
cur[x] = i;
if (dis[to = a[i].v] == dis[x] + 1 && (f = dfs(to, min(val - temp, a[i].w)))) {
a[i].w -= f, a[i ^ 1].w += f;
temp += f;
if (temp == val)break;
}
}
return temp;
}
```
by Zaunese @ 2022-11-24 20:34:47