P3381 【模板】最小费用最大流

P3381 【模板】最小费用最大流

P3381 【模板】最小费用最大流

#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<queue> using namespace std; struct node { int point; int value; int flow; int nxt; }; node line[200000]; int head[10010],tail=-1; void add(int x,int y,int z,int k) { line[++tail].point=y; line[tail].value=k; line[tail].flow=z; line[tail].nxt=head[x]; head[x]=tail; } int max_flow,min_spent; int dis[10010],flow[10010],last[10010]; bool inque[10010]; int pre[10010]; bool SPFA(int begin,int end) { memset(dis,127,sizeof(dis)); memset(inque,0,sizeof(inque)); memset(flow,127,sizeof(flow)); queue<int>q; q.push(begin); inque[begin]=true; pre[end]=-1; dis[begin]=0; while(!q.empty()) { int pas=q.front(); q.pop(); inque[pas]=false; for(int i=head[pas];i!=-1;i=line[i].nxt) if(line[i].flow>0&&dis[line[i].point]>dis[pas]+line[i].value) { dis[line[i].point]=dis[pas]+line[i].value; pre[line[i].point]=pas; last[line[i].point]=i; flow[line[i].point]=min(line[i].flow,flow[pas]); if(!inque[line[i].point]) { q.push(line[i].point); inque[line[i].point]=true; } } } if(pre[end]==-1) return false; return true; } void EK(int begin,int end) { while(SPFA(begin,end)) { int pas=end; max_flow+=flow[end]; min_spent+=dis[end]*flow[end]; while(pas!=begin) { line[last[pas]].flow-=flow[end]; line[last[pas]^1].flow+=flow[end]; pas=pre[pas]; } } } int main() { int n,m,s,t; scanf("%d%d%d%d",&n,&m,&s,&t); for(int i=1;i<=n;i++) head[i]=-1; int a,b,c,d; for(int i=1;i<=m;i++) { scanf("%d%d%d%d",&a,&b,&c,&d); add(a,b,c,d); add(b,a,0,-1*d); } EK(s,t); printf("%d %d",max_flow,min_spent);; }

转载于:https://www.cnblogs.com/Lance1ot/p/9037905.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101663.html原文链接:https://javaforall.net

(0)
上一篇 2021年5月28日 上午10:00
下一篇 2021年5月28日 上午11:00


相关推荐

  • IDEA集成Claude Code (win系统)

    IDEA集成Claude Code (win系统)

    2026年3月16日
    2
  • QQ机器人制作教程_qq群机器人如何编写

    QQ机器人制作教程_qq群机器人如何编写目录前期准备1、机器人框架的下载和配置2、python的配置和安装具体实现1、发送信息2、获取群成员列表3、接收上报的事件4、实现简单的自动回复下一篇文章介绍更多功能前期准备1、机器人框架的下载和配置首先需要一个qq机器人框架,我使用的是基于mirai以及MiraiGo开发的go-cqhttp(里面有开发文档)。框架下载地址Windows下32位文件为go-cqhttp-v*-windows-386.zipWindows下64位文件为go-cqhttp-v*-windows-amd6

    2022年8月10日
    6
  • intellij idea上传项目到码云

    intellij idea上传项目到码云

    2021年5月16日
    140
  • winform 安装部署

    winform 安装部署1 新建安装部署项目打开 VS 点击新建项目 选择 其他项目类型 安装与部署 安装向导 安装项目也一样 然后点击确定 2 安装向导关闭后打开安装向导 点击下一步 或者直接点击完成 3 开始制作安装向导完成后即可进入项目文件夹 双击 应用程序文件夹 在右边的空白处右击 选择添加 文件 将你的做的应用程序的可执行文件和相应的类库和组件添加进来 然后右击你的文件 创建快捷方式 然后把快

    2026年3月26日
    2
  • 对数运算基本公式

    对数运算基本公式目录对数的换底公式对数的四则运算指数式与对数式的互化对数的换底公式对数的四则运算指数式与对数式的互化

    2026年3月19日
    1
  • Ubuntu下插入网线无法联网的问题

    Ubuntu下插入网线无法联网的问题今天把以前的服务器搬出来,准备训练一个深度学习模型,然而,在联网的过程中,出现一个问题:就是插入网线后无法联网。想到以前配置过翻墙,就把相关的配置文件如.bashrc,/etc/profile,等相关文件进行了修改,屏蔽掉以前的翻墙代理设置,然而还是无法联网。后面想到以前是用拨号INodeClient来连接上网的,就把与InodeClient相关的配置注释掉,然而还是无法上网。后面在网上找到一个解决方案:参考网址https://blog.csdn.net/zhu334974857/articl.

    2022年6月26日
    94

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号