当前位置: 首页 > news >正文

费用流

理解

在lzz大佬讲解下一下就理解了,%%%

就是把bfs改称spfa,中间的dis数组就是费用,也就是要找到s到t的最短路作为增光路

所以所有在dinic找到的增光路费用都是相同的,然后就是板子了

注意在dinic中,防止有负环,所以要用vis数组像dfs一样进行判重

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e3,M=5e4+5,inf=1e14;
int n,m,cnt=1,ans1,ans2,cost;
int dis[N],vis[N],head[N],s[N],now[N];
struct edge{int v,w,c,nxt;
}e[M*2];
void add(int u,int v,int c,int w){e[++cnt]={v,w,c,head[u]};head[u]=cnt;
}
bool SPFA(){for(int i=1;i<=n;i++)  dis[i]=inf,vis[i]=0,now[i]=head[i],s[i]=0;queue<int>q;dis[1]=0;q.push(1);s[1]=1;while(!q.empty()){int u=q.front();q.pop();s[u]=0;for(int i=head[u];i;i=e[i].nxt){int v=e[i].v,w=e[i].w,c=e[i].c;if(c&&dis[v]>dis[u]+w){dis[v]=dis[u]+w;q.push(v),s[v]=1;}}}cost=dis[n];if(dis[n]<inf)  return 1;return 0;
}
int dinic(int u,int sum){if(u==n)  return sum;vis[u]=1;int flow=0;for(int i=now[u];i&&sum;i=e[i].nxt){now[u]=i;//写成i了int v=e[i].v,c=e[i].c,w=e[i].w;if(c&&dis[v]==dis[u]+w&&!vis[v]){int k=dinic(v,min(sum,c));if(!k)  dis[v]=inf;e[i].c-=k,e[i^1].c+=k;//+-别写反了!!!!!!!!flow+=k,sum-=k;}}vis[u]=0;return flow;
}
signed main(){scanf("%lld%lld",&n,&m);for(int i=1;i<=m;i++){//别写成n了!!!!!!!!!!!!!!!int u,v,w,c;scanf("%lld%lld%lld%lld",&u,&v,&c,&w);add(u,v,c,w),add(v,u,0,-w);}while(SPFA()){int flow=dinic(1,inf);ans1+=flow;ans2+=flow*cost;}printf("%lld %lld\n",ans1,ans2);
}
http://www.hskmm.com/?act=detail&tid=1177

相关文章:

  • [豪の学习笔记] 软考中级备考 基础复习#6
  • RAG
  • 手撕深度学习:矩阵求导链式法则与矩阵乘法反向传播公式,深度学习进阶必备!
  • CF *3200
  • 分享我在阿贝云使用免费虚拟主机的真实体验!
  • 软件测试工程师的职业天花板在哪里?如何突破?
  • 02020213 .NET Core重难点知识13-配置日志邮件服务案例、DI读取、DI与扩展方法、VS配置项目环境变量
  • GJOI 模拟赛题记录声明
  • Ubuntu 卸载 Firefox 浏览器
  • 录无法修改OneDrive文件的解决方法
  • 量子机器学习入门:三种数据编码方法对比与应用
  • 向量数据库
  • UGNX2506下载和安装教程包含激活教程步骤(超详细保姆级图文UGNX安装步骤)
  • ansible剧本
  • 2111111
  • Ubuntu 安装 Google Chrome
  • Cannot call Open vSwitch: ovsdb-server.service is not running
  • uniapp插件开发
  • 【模板】平面最近点对
  • npx playwright install chromium 安装失败,如何离线安装
  • Power BI制作指标达成跟踪器
  • 一个基于 .NET 开源、轻便的 Windows 优化工具,适用于 Win7 - Win11 最新版的优化!
  • 两种求快速幂的方法
  • 杂题20250909-
  • LLM2
  • 第01周 预习、实验与作业:绪论与Java基本语法
  • 第一周作业1
  • NSSCTF强网杯GameMaster
  • ARC199 做题记
  • 深入理解Redis高并发分布式锁