Mn Zn发问
查看原帖
Mn Zn发问
643818
I_AK_CTS楼主2025/6/18 20:30

同是当前弧优化。

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;
		}
	}

就变快了呢?

2025/6/18 20:30
加载中...