灵异错误求解答
查看原帖
灵异错误求解答
360780
Qerrj楼主2024/1/24 10:15

将当前弧优化的方式改一下就跑的飞快。

int dfs(int u, int flow) {
	if (u == t) return flow;
	int rest = flow;
	for (int &i = now[u]; i && rest; i = edge[i].next) {
		int v = edge[i].to;
//		now[u] = i;
		if (edge[i].dis && d[v] == d[u] + 1) {
			int k = dfs(v, min(rest, edge[i].dis));
			if (!k) d[v] = 0;
			rest -= k;
			edge[i].dis -= k;
			edge[i ^ 1].dis += k;
		}

	}
	return flow - rest;
}

这种方式会T掉 甚至不加当前弧优化还更慢测评记录

int dfs(int u, int flow) {
	if (u == t) return flow;
	int rest = flow;
	for (int i = now[u]; i && rest; i = edge[i].next) {
		int v = edge[i].to;
		now[u] = i;
		if (edge[i].dis && d[v] == d[u] + 1) {
			int k = dfs(v, min(rest, edge[i].dis));
			if (!k) d[v] = 0;
			rest -= k;
			edge[i].dis -= k;
			edge[i ^ 1].dis += k;
		}

	}
	return flow - rest;
}

这么写就跑的飞快测评记录

2024/1/24 10:15
加载中...