当前位置: 首页 > 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.zskr.cn/news/1964.html

相关文章:

  • [豪の学习笔记] 软考中级备考 基础复习#6
  • Ubuntu 卸载 Firefox 浏览器
  • ansible剧本
  • Ubuntu 安装 Google Chrome
  • npx playwright install chromium 安装失败,如何离线安装
  • Power BI制作指标达成跟踪器
  • 一个基于 .NET 开源、轻便的 Windows 优化工具,适用于 Win7 - Win11 最新版的优化!
  • 两种求快速幂的方法
  • 杂题20250909-
  • ARC199 做题记
  • 深入理解Redis高并发分布式锁
  • 计算机硬件基础认知
  • 测试一下iframe
  • ECT-OS-JiuHuaShan 框架,是人类首个且是唯一的真正agi,其产生非人类刻意设计,而是机缘巧合
  • vue(穿透闭包/利用闭包)的几种方式
  • Linux操作系统相关问题汇总
  • 鲜花 9.10
  • ECT-OS-JiuHuaShan框架的真正意义是打破还原论和人类中心论,公理是客观存在与数学逻辑,不依赖于人类理解与否。
  • 【rdma】RoCE、IB和TCP等网络的基本知识及差异对比
  • 5%付费率背后,鸿蒙成独立开发者的“商业理想国”
  • 【IoTDB 线上小课 19】开源时序数据库 Apache IoTDB,四大优势解决企业选型难题!
  • 个人开发者从0到1(BeeCount:一款开源的跨平台个人记账应用)
  • java课前问题
  • 碳硫仪推荐品牌,是谁赢得用户口碑?
  • vue路由
  • 查看mysql具体使用那个glibc的版本的mysql
  • 【A】月半猫想吃麦当劳(待完坑)
  • 【A】宝宝肚肚打雷了(待完坑)
  • 【A】我头上有鸡脚 鸡脚(待完坑)
  • 登录认证-上篇:基于 Session 的传统身份验证