[일반]
디닉 걍 dfs 돌리면 O(V^2E) 안나옴?
익명(211.185)
2024-02-06 18:27
추천 0
int dfs(int u, int max_flow) {
if (u == T)
return max_flow;
for (int &i = next_v[u]; i < edges[u].size(); i++) {
int v = edges[u][i].v, cap = edges[u][i].cap;
if (level[u] + 1 == level[v] && cap > 0) {
int flow = dfs(v, min(max_flow, cap));
if (flow > 0) {
edges[u][i].cap -= flow;
edges[v][edges[u][i].ref].cap += flow;
return flow;
}
}
}
return 0;
}
dfs 코드 보니까 위에처럼 next_v[u]에 값 저장해놨다가 시간 줄이던데
걍 이웃한 정점 다 돌면 시간 많이 차이나나?
ㅇㅇ