咱们的程序怎么也停不下来了

P3376 【模板】网络最大流

他是怎样陷入无限循环的
by 王茗仟 @ 2022-11-04 20:29:09


加了当前弧优化就必须改成 ```cpp for(int i=cur[u];~i&&flow<lim;i=e[i].nx){ cur[i]=i;//当前弧优化,很新对你来说,(走过就不再走了) int v=e[i].v; if(dis[v]==dis[u]+1&&e[i].w){ int minf=dfs(v,min(e[i].w,lim-flow));//求要给v多少 //limit-flow给这条边能分的最多有多少 e[i].w-=minf; e[i^1].w+=minf; flow+=minf; if(flow==lim){ //全分完了直接结束吧 return flow; } } } ``` 要不然 cur 会一直更新
by treeqwq @ 2022-11-04 20:31:34


@[王茗仟](/user/291604)
by treeqwq @ 2022-11-04 20:31:44


没看出来您改了啥?
by IceYukino @ 2022-11-04 20:35:25


@[LSOT](/user/743050) 您是不是只改了for里面那一点
by 王茗仟 @ 2022-11-04 20:35:55


@[王茗仟](/user/291604) 对
by treeqwq @ 2022-11-04 20:36:20


@[LSOT](/user/743050) 并不是那里的问题
by 王茗仟 @ 2022-11-04 20:37:42


@[gqh_juruo](/user/214538) 他改了for的条件
by 王茗仟 @ 2022-11-04 20:38:46


您的`for(int i=head[u];~i;i=e[i].nx)`为什么不写成`for(int i=head[u];i;i=e[i].nx)`呢?咱不知道为什么要写`~i` 修改以后答案依然不对,但是不会TLE了,另外,可以增加剪枝: ```cpp if(u==t || lim == 0){ return lim; } ```
by 野生林登万 @ 2022-11-04 20:39:01


@[王茗仟](/user/291604) 啊,那就不知道了,不过你不该这里也过不去(((
by treeqwq @ 2022-11-04 20:39:13


| 下一页