for (int& i = cur[u]; i; i = e[i].next) {
int v = e[i].v;
if (e[i].cap && level[v] == level[u] + 1) {
long long res = dfs(v, std::min(in, e[i].cap));
e[i].cap -= res, e[i ^ 1].cap += res;
in -= res, out += res;
if (in == 0) break;
}
}
复杂度是对的,但是
for (int& i = cur[u]; i && in; i = e[i].next) {
int v = e[i].v;
if (e[i].cap && level[v] == level[u] + 1) {
long long res = dfs(v, std::min(in, e[i].cap));
e[i].cap -= res, e[i ^ 1].cap += res;
in -= res, out += res;
}
}
却会TLE
(这是为什么