井中绝兰,如果你本地运行与luogu评测结果不一样

P3376 【模板】网络最大流

CodeDay @ 2023-10-30 14:05:44

建议检查代码中有没有出现未定义行为,如:

//主函数外
struct Edge{
    int to, nxt;
    int Cap, flow;
    Edge(const int &u = 0, const int &v = 0, const int &flw = 0):to(v),Cap(flw)
    {
        nxt = head[u], flow = 0;
        head[u] = tot;
    }
}E[M<<1];
int tot = 1;
//主函数内
E[++tot] = Edge(u, v, w);
E[++tot] = Edge(v, u, 0);

可以改成:

++tot;
E[tot] = Edge(u, v, w);
++tot;
E[tot] = Edge(v, u, 0);

原因:

程序先计算等号右边的值再赋给左边,导致WA/TLE

但在本地没有这样的问题,怎么会事呢


by hopelessness @ 2023-10-30 14:11:57

@CodeDay 因为爱情


by hopelessness @ 2023-10-30 14:16:15

警钟撅烂


by Mikefeng @ 2023-10-30 14:41:28

关于等号两边优先级未定义这件事。


by Eznibuil @ 2023-10-30 14:53:11

这边建议 C++17。


|