求助 Dinic
  • 板块学术版
  • 楼主tbdsh
  • 当前回复14
  • 已保存回复15
  • 发布时间2024/9/18 18:25
  • 上次更新2024/9/18 21:19:21
查看原帖
求助 Dinic
752485
tbdsh楼主2024/9/18 18:25

Code 1:

  for (int &i = tmp[x]; i < g[x].size() && res; i++){
    //Do something.
  }

Code 2:

  for (int &i = tmp[x]; i < g[x].size(); i++){
    //Do something.
    if (!res){
      break;
    }
  }

这两份代码,第一份 T 了,第二份能 A。

想问一下为啥。

//Do something. 的内容一样,都是下面这个:

    auto v = g[x][i];
    int w = Dis[v.id];
    if (level[v.v] != level[x] + 1 || !w){
      continue;
    }
    inc = dinic(v.v, min(res, w));
    if (!inc){
      level[v.v] = 0;
    }
    res -= inc;
    Dis[v.id] -= inc;
    Dis[v.id ^ 1] += inc;
2024/9/18 18:25
加载中...