我 Dinic 写成这样都能过。。
int dinic(int u, int flow) {
if (u == T) return true;
int res = flow;
for (int &i = now[u]; i; i = nxt[i]) {
int v = ver[i], w = wei[i];
if (w && d[v] == d[u] + 1) {
int k = dinic(v, min(res, w));
if (!k) d[v] = 0;
wei[i] -= k, wei[i ^ 1] += k, res -= k;
}
if (!res) break;
}
return flow - res;
}
注意这一句:
if (u == T) return true;