洛谷
#include<bits/stdc++.h>
using namespace std;
const int N = 50005, M = 50000 * 2 + 5;
int h[N], e[M], ne[M], flow[M], cost[M], idx;
int n, m, S, T;
int dist[N], pre[N];
bool st[N];
void add(int a, int b, int v, int c) {
flow[idx] = v, cost[idx] = c, e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}
bool spfa() {
for (int i = 1; i <= n; i++) dist[i] = 2e9, st[i] = false, pre[i] = -1;
dist[S] = 0;
queue<int> q;
q.push(S);
st[S] = true;
while (q.size()) {
int x = q.front();
q.pop();
st[x] = false;
for (int i = h[x]; ~i; i = ne[i]) {
int j = e[i];
if (flow[i] && dist[j] > dist[x] + cost[i]) {
dist[j] = dist[x] + cost[i];
pre[j] = i;
if (!st[j]) st[j] = true, q.push(j);
}
}
}
if (pre[T] == -1) return false;
return true;
}
int maxflow(int &c) {
int res = 0;
while (spfa()) {
int minv = INT_MAX, cur = pre[T];
while (cur != -1)
minv = min(minv, flow[cur]), cur = pre[e[cur ^ 1]];
cur = pre[T];
while (cur != -1)
flow[cur] -= minv, flow[cur ^ 1] += minv, c += cost[cur] * minv, cur = pre[e[cur ^ 1]];
res += minv;
}
return res;
}
int main() {
memset(h, -1, sizeof h);
cin >> n >> m >> S >> T;
while (m--) {
int x, y, z, c;
scanf("%d%d%d%d", &x, &y, &z, &c);
add(x, y, z, c), add(y, x, 0, -c);
}
int c = 0;
int ans = maxflow(c);
cout << ans << ' ' << c << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现