Code 1:
for (int &i = tmp[x]; i < g[x].size() && res; i++){
//Do something.
}
Code 2:
for (int &i = tmp[x]; i < g[x].size(); i++){
//Do something.
if (!res){
break;
}
}
这两份代码,第一份 T 了,第二份能 A。
想问一下为啥。
//Do something. 的内容一样,都是下面这个:
auto v = g[x][i];
int w = Dis[v.id];
if (level[v.v] != level[x] + 1 || !w){
continue;
}
inc = dinic(v.v, min(res, w));
if (!inc){
level[v.v] = 0;
}
res -= inc;
Dis[v.id] -= inc;
Dis[v.id ^ 1] += inc;