#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define MAXN 444 //邻接表要开边数的2倍
struct Edge{
int v,cap,next;
}edge[MAXN];
int level[MAXN];//标记层次(距离标号)
//间隙优化,定义gap[i]为标号是i的点的个数
//在重标记i时,检查gap[level[i]],若减为0,这算法结束。
int gap[MAXN];
int pre[MAXN];//前驱
int cur[MAXN];
int head[MAXN];
int NV,NE;
//NE为边数,初始化为0;
void Insert(int u,int v,int cap,int cc=0){
edge[NE].cap=cap;edge[NE].v=v;
edge[NE].next=head[u];head[u]=NE++;
edge[NE].cap=cc;edge[NE].v=u;
edge[NE].next=head[v];head[v]=NE++;
}
//参数,源点,汇点
int SAP(int vs,int vt){
memset(level,0,sizeof(level));
memset(pre,-1,sizeof(pre));
memset(gap,0,sizeof(gap));
//cur[i]保存的是当前弧
for(int i=0;i<=NV;i++)cur[i]=head[i];
int u=pre[vs]=vs;//源点的pre还是其本身
int maxflow=0,aug=0x7FFFFFFF;gap[0]=NV;
while(level[vs]<NV){
loop :
for(int &i=cur[u];i!=-1;i=edge[i].next){
int v=edge[i].v;//v是u的后继
//寻找可行弧
if(edge[i].cap&&level[u]==level[v]+1){
//aug表示增广路的可改进量
aug=min(aug,edge[i].cap);
pre[v]=u;u=v;
//如果找到一条增广路
if(v==vt){
maxflow+=aug;//更新最大流;
//路径回溯更新残留网络
for(u=pre[v];v!=vs;v=u,u=pre[u]){
//前向弧容量减少,反向弧容量增加
edge[cur[u]].cap-=aug;
edge[cur[u]^1].cap+=aug;
}
aug=0x7fffffff;
}
goto loop;
}
}
int minlevel=NV;
//寻找与当前点相连接的点中最小的距离标号(重标号)
for(int i=head[u];i!=-1;i=edge[i].next){
int v=edge[i].v;
if(edge[i].cap&&minlevel>level[v]){
cur[u]=i;//保存弧
minlevel=level[v];
}
}
if((--gap[level[u]])==0)break;//更新gap数组后如果出现断层,则直接退出。
level[u]=minlevel+1;//重标号
gap[level[u]]++;//距离标号为level[u]的点的个数+1;
u=pre[u];//转当前点的前驱节点继续寻找可行弧
}
return maxflow;
}
int main(){
int m;//边的条数
while(~scanf("%d%d",&m,&NV)){
memset(head,-1,sizeof(head));
NE=0;
for(int i=1;i<=m;i++){
int u,v,cap;
scanf("%d%d%d",&u,&v,&cap);
Insert(u,v,cap);
}
printf("%d\n",SAP(1,NV));
}
return 0;
}相关推荐
SAP_Template Allocations
SAP_Template Allocations
sap 模板
#define MAXN 1111 //邻接表要开边数的2倍 struct Edge{ int v,cap,next; }edge[MAXN]; int level[MAXN];//标记层次(距离标号) //间隙优化,定义gap[i]为标号是i的点的个数 //在重标记i时,检查gap[level[i]],若减为0,这算法结束。 int gap[MAXN]; int pre[MAXN]
SAP模板-MM初始化数据模板
SAP模板-MM初始化数据模板(仅供自己使用) 包含有: 价格条件新增上传格式(ZMM014) 合格供应商上传格式(ZMM015) 供应商收集上传格式 盘点数量导入格式(ZMM008) 批量扩充仓位
SAP灵活工作流场景模板创建
事务代码:SWDD_SCENARIO 创建灵活工作流模板,并激活 工作流模版创建示例 1. 创建流程对象容器 2. 编辑模板中的灵活块 3. 设置工作流启动事件 4. 设置工作流运行时事件 5. 设置工作流输出结果(可选) 6. 工作流控制类 7. 创建流程活动 8. 创建流程条件 9. 代理规则 9. 值帮助 10. 参考时间 11. 电子邮件模版 12. 激活灵活工作流场景
预流推进算法的最大流模板
预流推进算法是不同与增广路思想的另一种求最大流的算法,主要思想是把流从源点经过边,并通过调整顶点的标号来把流压入汇点。 该算法需要维护一个装有活跃顶点的标号,所谓活跃定点则是流出量小于流入量的顶点,则具有超额量,欲使该顶点平衡(流出==流入),则需要把该定点积累的流压出,被压入流的顶点只能是距离标号比该点标号小1且这条边未满流的顶点,若不存在这样的顶点但是改点仍未活跃顶点,则需要把该点的距离标号加1. 这只是利用普通的FIFO队列,为了加速算法,可以维护一个优先队列,以顶点的距离标号为优先级,距离标号大的先出列。
【AI落地】AI生成测试用例,claude or gpt?(提效至少 50%)
gpt生成测试用例?当然好使啦,用好了提效50%+,用不好就让他变好!
SAP Smartform中table和template的区别
Smartform中table和template的区别 面试可能会被问到哦
svn co --depth和svn up --set-depth 只check out下一层文件 只更新指定文件 只更新下一层的用法
svn的工程可能很大 有时我们只需要部分文件即可 这里介绍几个命令 1.svn co(check out) --depth --depth=empty,files,immediates,infinity 假设某svn结构如下 svn://root/PRO/A_dir/a svn://root/PRO/B_dir/b svn://root/PRO/c_file svn co --depth=emptysvn://root/PRO 此时只会在本地check out出 PRO/的空目录。 sv.
模板分享:网络最大流
maxflow
Dify DSL文件分享 Dify讨论群 大模型token资源等(持续收集更新)
基于LLMOps平台-Dify的一站式学习平台。包含不限于:Dify案例、DSL文件分享、模型接入、Dify交流讨论等各类资源分享。
六轴机械臂正逆解计算
机械臂运动学就是。包括(Forward Kinematics)和(InverseKinematics)两部分。正运动学就是逆运动学则是关节变量->机械臂末端执行器的姿势=正向运动学机械臂未端执行器的位姿->关节变量=逆向运动学。
P3376 【模板】网络最大流
题目链接 存模板: 最大流EK模板: #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <cmath> #include <queue> using namespace std; #define int long long using namespace std; const int maxn = 205; con
3款主流AIGC模型部署方案对比:本地、云端与混合架构的成本与性能分析
本文对比分析了3种主流AIGC模型部署方案(本地、云端与混合架构)的成本与性能差异,帮助企业在预算、性能和维护复杂度之间找到最佳平衡点。通过实际案例和详细数据,展示了不同部署方式在延迟、扩展性、数据隐私等方面的优劣势,为技术决策者提供实用参考。
最大流 isap 模板
存一个最大流isap的模板 直接填入m,n,S,T 就可以跑了 #include<cstdio> #include<cstring> #include<climits> #include<algorithm> #include<queue> using namespace std; int n,m,flo...
Go语言集成Ollama本地大模型:gollama库实战指南
在当今的AI应用开发中,大型语言模型(LLM)的集成已成为关键技术。其核心原理是通过API调用,将自然语言处理能力嵌入到各类应用中。从技术价值看,本地化部署的LLM解决了数据隐私、网络延迟和持续成本三大痛点,尤其适合处理敏感数据或对实时性要求高的场景。在工程实践中,开发者常使用专门的客户端库来简化与模型服务的交互,例如通过封装REST API、提供类型安全接口和流式处理支持,从而提升开发效率和代码健壮性。具体到Go语言生态,结合Ollama这一流行的本地大模型运行工具,可以实现完全离线、低延迟的AI功能集成
作为一名爬虫人如何实现千万级数据爬取?
爬虫门槛不高,高就高在往后余生的每一次实操都随时会让你崩溃!Bro
ACM 最大流 dinic 模板
最大流的应用实在是太广泛了 几个比较有用的定理: 最大流=最小割 二分图最大匹配=二分图最小点覆盖(最大流) 二分图的匹配直接用最大流好了。 下面是个很喜欢的dinic模板,顺便用这个版过掉POJ3041 #include using namespace std; const int maxn=150000; const int maxm=2000000; const int
innovus:InstPad、CellPad 、module padding、clock cell halo
我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?site_num指的是padding的大小以site宽度为单位。
最大流,费用流模板
最大流模板(Dinic) #include<iostream> #include<string> #include<vector> #include<map> #include<algorithm> #include<queue> #include<set> #include<stdio.h> #include<cstring> typedef long long int ll; const ll i
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
最大流模板(Dinic)
和最小费用流模板对比着看:最小费用流模板 贴上最大流模板: #include #include using namespace std; const int oo=1e9; /**oo 表示无穷大*/ const int mm=111111111; /**mm 表示边的最大数量,记住要是原图的两倍,在加边的时候都是双向的*/ const int mn=999; /**mn 表示点的最大数量*/ int node,src,
华为的C语言编程规范.pdf
华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。
【模板】网络最大流ISAP
【模板】网络最大流ISAP 建反边从t到s,bfs跑记录每个点所在层,gap记录每层的点数 #include <bist/stdc++.h> using namespace std; typedef long long ll; const ll max_n = 1e6; const ll max_m = 1e6; const ll max_e = max_m * 2; const ll inf = 2147483647; ll head[max_n], next[max_e], to[max_e
最大流模板(Maximum Flow)
最大流模板(Maximum Flow) 一篇写得通俗易懂介绍最大流的文章:最大流模板【EdmondsKarp算法,简称EK算法,O(m^2n)】 残留网络 残存容量 c~f~(u, v) = c(u, v) - f(u, v); 算法导论中对残存网络的一些解释 一条边所能允许的反向流量最多将其正向流量抵消. 残存网络中的这些反向边允许算法将发送出来的流量发送回去. 而将流量从...
最大流 && 最小费用最大流模板
模板从 这里 搬运,链接博客还有很多网络流题集题解参考。 最大流模板 ( 可处理重边 ) const int maxn = 1e6 + 10; const int INF = 0x3f3f3f3f; struct Edge { int from,to,cap,flow; Edge(){} Edge(int from,int ...
模板 - 最大流
update1:通过了【模板】网络最大流的验证。 update2:怎么求出最大流各条边的流量?将原图备份,dinic()后得到残余网络,用原图的流量减去残余网络的剩余流量。 标准模板: #include<bits/stdc++.h> using namespace std; typedef long long ll; namespace Dinic_Maxflow { ...
468



被折叠的 条评论
为什么被折叠?



