问一个问题

P3381 【模板】最小费用最大流

```cpp Pair dijkstra() { int ansflow = 0, anscost = 0; while(233) { memset(dis, 0x3f, sizeof(dis)); dis[S] = 0; q.push(make_pair(0, S)); while(!q.empty()) { Pair u = q.top();q.pop(); if(-dis[u.se] != u.fi) continue; if(u.se == T) break; for(int i = head[u.se]; i; i = e[i].nxt) { int v = e[i].v; int nowcost = e[i].cost + h[u.se] - h[v]; if(e[i].flow && dis[v] > dis[u.se] + nowcost) { dis[v] = dis[u.se] + nowcost; q.push(make_pair(-dis[v], v)); frm[v]=i; } } } if(dis[T] == inf) break; for(int i = 1; i <= n; ++i) h[i] += dis[i]; int nowflow = inf; for(int i = T; i != S; i = e[frm[i]].u) nowflow=min(nowflow, e[frm[i]].flow); for(int i = T; i != S; i = e[frm[i]].u) { e[frm[i]].flow -= nowflow, e[frm[i]^1].flow += nowflow; } ansflow += nowflow; anscost += nowflow * h[T]; } return make_pair(ansflow,anscost); } ```
by ComplexPug @ 2018-12-27 17:39:30


会不会像主函数里面int a[111111111]一样爆掉
by ComplexPug @ 2018-12-27 17:41:04


因为分配栈帧的时候要重新分配内存啊,放外面就不用重新分配内存啊
by Quank123Wip @ 2018-12-27 17:42:21


@[要好](/space/show?uid=92100) 出于效率考虑,STL在pop的时候是不会释放内存的,只有在析构的时候回释放内存。所以放在里面相当于每次跑函数都申请了 $O(n)$ 的内存,但是放在外面只会申请一次 $O(n)$ 的内存。这样节省了很多动态分配内存的时间
by 一扶苏一 @ 2018-12-27 18:48:14


@[一扶苏一](/space/show?uid=65363) 可是他是放了里面快啊 他说反了
by 良月澪二 @ 2018-12-27 18:54:39


挺尬的
by 良月澪二 @ 2018-12-27 18:55:45


@[LinkedIn](/space/show?uid=78064) 这就非常的尴尬了
by 一扶苏一 @ 2018-12-27 19:02:52


刚才手误了,对不起撒
by ComplexPug @ 2018-12-27 19:13:18


|