社区讨论

求助,拟萌就假装我是个妹子吧

P2805[NOI2009] 植物大战僵尸参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mi7rn60p
此快照首次捕获于
2025/11/21 02:29
4 个月前
此快照最后确认于
2025/11/21 02:29
4 个月前
查看原帖
为什么我写网络流的时候如果这样写的dfs:
CPP
int dfs(int u,int flow){
	if(u==t)
	  return flow;
	int res=0;
	for(int &i=cur[u];i!=-1;i=nxt[i]){
		int v=to[i];
		if(depth[v]==depth[u]+1&&w[i]&&in[v]){
			int di=dfs(v,min(flow,w[i]));
			if(di){
				w[i]-=di;
				w[i^1]+=di;
				res+=di;
				if(res==flow)
				  break;
			}
		}
	}
	return res;
}
他就WA掉最后两个点
然后改成这样:
CPP
int dfs(int u,int flow){
	if(u==t)
	  return flow;
	for(int &i=cur[u];i!=-1;i=nxt[i]){
		int v=to[i];
		if(depth[v]==depth[u]+1&&w[i]&&in[v]){
			int di=dfs(v,min(flow,w[i]));
			if(di){
				w[i]-=di;
				w[i^1]+=di;
				return di;
			}
		}
	}
	return 0;
}
他就A了?大惑不解...这两个写法有什么不同吗?

回复

3 条回复,欢迎继续交流。

正在加载回复...