同是当前弧优化。
for(int &i=cur[x];~i&&F;i=e[i].ne)
{
int v=e[i].to,w=e[i].c;
if(lv[v]==lv[x]+1&&w>0)
{
int c=dfs(v,min(w,F));
if(!c) lv[v]=-1;
e[i].c-=c,e[i^1].c+=c,res+=c,F-=c;
}
}
上面的会TLE 25分。
但是为什么改掉指针后:
for(int i=cur[x];~i&&F;i=e[i].ne)
{
int v=e[i].to,w=e[i].c;
cur[x]=i;
if(lv[v]==lv[x]+1&&w>0)
{
int c=dfs(v,min(w,F));
if(!c) lv[v]=-1;
e[i].c-=c,e[i^1].c+=c,res+=c,F-=c;
}
}
就变快了呢?