除了size没初值,以及没打换行我找不出错误了
by Edward_Elric @ 2019-03-22 12:19:27
兄弟,我还是想点意大利万岁~
by ustze @ 2019-03-22 19:46:22
您的 `dinic` 函数里没判断 `to` 是否已经到达过了。
大概需要改成:
```cpp
int visit[maxn];
int dinic(int u,int f) {
if(u==t||!f)return f;
int flow=0;
//-------//
visit[u]=1;
//-------//
for(int &i=cur[u]; i; i=e[i].next) {
int to=e[i].to;
//------------------//
if(visit[to])continue;
//------------------//
if(dis[to]==dis[u]+e[i].cost) {
int d=dinic(to,min(f,e[i].cap));
if(d>0) {
e[i].cap-=d;
e[i^1].cap+=d;
flow+=d;
f-=d;
if(!f)break;
}
}
}
//-------//
visit[u]=0;
//-------//
return flow;
}
```
就能过了。
by shanjb0221 @ 2019-04-17 22:06:21