要求加强数据及一些建议

P3376 【模板】网络最大流

吹雪吹雪吹 @ 2018-07-14 20:12:21

rt.

https://www.luogu.org/discuss/show?postid=47734

https://www.luogu.org/discuss/show?postid=43045

https://www.luogu.org/discuss/show?postid=42588

https://www.luogu.org/discuss/show?postid=41686

数据有多水就不多举例了。

这是一个模板题,设题应当以方便学习为目的。但是数据水的要** ,小数据点胡搞就能过(某些大点也是),十分不利于DeBug,甚至可能误导蒟蒻(比如说我),使ta们一直延续错误但在此可以A的写法,有违模板题的设置初衷。

建议(适用于任何其他模板题):

针对不同错误情况构造相应的小数据,方便DeBug;

增强大数据点,可综合各种可能的错误;

支持并鼓励用户构造hack数据并提交。


by 吹雪吹雪吹 @ 2018-07-14 20:15:38

消灭零回复惨案


by VenusM1nT @ 2018-07-14 20:16:03

%%%xhw大佬


by 吹雪吹雪吹 @ 2018-07-14 20:17:06

大师球~@Venus


by UKE开车自动机 @ 2018-07-14 20:50:50

你们不是同桌吗,戏这么多的吗


by memset0 @ 2018-07-18 18:48:47

所以你需要 LOJ


by GKxx @ 2018-07-19 09:54:35

@chen_zhe


by command_block @ 2018-07-24 16:02:25

dfs都过了...

#include<iostream>
#include<cstdio>
#include<vector>
#define Maxn 10000
using namespace std;
int n,m,source,sink,from,to,capacity,ans,last,cnt;
vector<int> g[Maxn+100],l[Maxn+100],b[Maxn+100];
int e[Maxn+100];
int dfs(int num,int val)
{
  if (num==sink)return val;
  e[num]=cnt;
  for (int i=0,tmp;i<g[num].size();i++)
   if (l[num][i]&&e[g[num][i]]!=cnt){
    tmp=dfs(g[num][i],min(val,l[num][i]));
    if (tmp){
      l[num][i]-=tmp;
      l[g[num][i]][b[num][i]]+=tmp;
      return tmp;
    }
  }
}
int main()
{
  scanf("%d%d%d%d",&n,&m,&source,&sink);
  for (int i=1;i<=m;i++){
    scanf("%d%d%d",&from,&to,&capacity);
    g[from].push_back(to);
    l[from].push_back(capacity);
    g[to].push_back(from);
    l[to].push_back(0);
    b[from].push_back(g[to].size()-1);
    b[to].push_back(g[from].size()-1);
  }last=-1;
  while(ans!=last){
    last=ans;cnt++;
    ans+=dfs(source,1000000000);
  }cout<<ans;
  return 0;
}

1964ms


by CYSCYS @ 2018-07-25 08:39:04

Dinic没建反边都过了。。。


by nflsjxc @ 2018-08-04 12:09:18

dinic写炸了也过了


|