https://www.luogu.com.cn/problem/P3376
输入格式
第一行包含四个正整数 \(n,m,s,t\),分别表示点的个数、有向边的个数、源点序号、汇点序号。
接下来\(m\)行,每行包含三个正整数 \(u_i,v_i,w_i\),表示第 \(i\) 条有向边从 \(u_i\) 出发,到达 \(v_i\),边权为 \(w_i\)(即该边最大流量为 \(w_i\) )。
输出格式
一行,包含一个正整数,即为该网络的最大流。
(待补充,咕咕咕。。。)
\(EK\)
\(Dinic\)
\(ISAP\)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 205;
const int INF = 2147483647;
struct Edge {
int from, to, cap, flow;
};
int n, m, s, t, cnt, gap[N], cur[N], dep[N];
vector <int> G[N];
vector <Edge> e;
void addEdge(int u, int v, int w, int i)
{
e.push_back((Edge){u, v, w, 0});
e.push_back((Edge){v, u, 0, 0});
G[u].push_back(i);
G[v].push_back(i^1);
}
void init()
{
memset(gap, 0, sizeof gap);
memset(cur, 0, sizeof cur);
memset(dep, 0, sizeof dep);
++gap[dep[t] = 1];
queue <int> Q;
Q.push(t);
while (!Q.empty()) {
int x=Q.front(); Q.pop();
for (int i = 0; i < G[x].size(); i++)
{
int v = e[G[x][i]].to;
if (!dep[v])
{
++gap[dep[v] = dep[x]+1];
Q.push(v);
}
}
}
}
int augment(int x, int a)
{
if (x == t || !a) return a;
int flow = 0;
for (int &i=cur[x]; i < G[x].size(); i++)
{
Edge& b = e[G[x][i]];
if (dep[x] == dep[b.to] + 1 && b.cap > b.flow) {
int tmp = augment(b.to, min(a, b.cap - b.flow));
flow += tmp;
a -= tmp;
b.flow += tmp;
e[G[x][i]^1].flow -= tmp;
if (!a) return flow;
}
}
if (!(--gap[dep[x]])) dep[s] = cnt+1;
++gap[++dep[x]], cur[x] = 0;
return flow;
}
ll maxFlow_ISAP()
{
cnt = n;
init();
ll ans = 0;
while (dep[s] <= cnt) ans += augment(s, INF);
return ans;
}
int main()
{
scanf("%d%d%d%d", &n, &m, &s, &t);
for (int i = 0; i < m; i++) {
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
addEdge(u, v, w, i << 1);
}
printf("%lld\n", maxFlow_ISAP());
return 0;
}
感谢支持!
__EOF__
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)