博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ1877: [SDOI2009]晨跑
阅读量:4619 次
发布时间:2019-06-09

本文共 2021 字,大约阅读时间需要 6 分钟。

【传送门:】


简要题意:

  给出n个点,起点为1,终点为n,给出m条边,每条边都有费用

  每个点只能走一次,请问最多有多少次机会能从起点到终点,并且求出这几次的最小费用和


题解:

  一开始还担心有环,实际上没有

  最小费用最大流

  我们将每个点(除了源点和汇点)都拆成两个点x,y,并且x,y之间的流量为1,费用为0,这样就保证每个点只走一次,并且不影响费用

  然后就直接跑费用流,每找到一条增广路就相当于多一次机会,将每条增广路的最小费用加起来即可

  空间和小错误卡了很久


参考代码:

#include
#include
#include
#include
#include
using namespace std;struct node{ int x,y,d,c,next,other;}a[1100000];int len,last[110000];void ins(int x,int y,int d,int c){ int k1=++len,k2=++len; a[k1].x=x;a[k1].y=y;a[k1].d=d;a[k1].c=c; a[k1].next=last[x];last[x]=k1; a[k2].x=y;a[k2].y=x;a[k2].d=-d;a[k2].c=0; a[k2].next=last[y];last[y]=k2; a[k1].other=k2; a[k2].other=k1;}int d[110000],pre[110000],pos[110000];bool v[110000];int list[110000];int st,ed;bool spfa(){ for(int i=st;i<=ed;i++) d[i]=999999999; d[st]=0; memset(v,false,sizeof(v)); v[st]=true; list[1]=st; int head=1,tail=2; while(head!=tail) { int x=list[head]; for(int k=last[x];k;k=a[k].next) { int y=a[k].y; if(a[k].c>0&&d[y]>d[x]+a[k].d) { d[y]=d[x]+a[k].d; pos[y]=x; pre[y]=k; if(v[y]==false) { v[y]=true; list[tail++]=y; } } } head++; v[x]=false; } if(d[ed]==999999999) return false; else return true;}int ans,t;void Flow(){ while(spfa()) { t++; ans+=d[ed]; int x; for(x=ed;x!=st;x=pos[x]) { a[pre[x]].c--; a[a[pre[x]].other].c++; } }}int main(){ int n,m; scanf("%d%d",&n,&m); len=0;memset(last,0,sizeof(last)); for(int i=1;i<=m;i++) { int x,y,d; scanf("%d%d%d",&x,&y,&d); if(x==1) ins(x,2*(y-1),d,1); else ins(2*(x-1)+1,2*(y-1),d,1); } for(int i=2;i

 

转载于:https://www.cnblogs.com/Never-mind/p/8032473.html

你可能感兴趣的文章
PagerIndicator主题样式修改
查看>>
java中HashMap类用法
查看>>
完整部署CentOS7.2+OpenStack+kvm 云平台环境(2)--云硬盘等后续配置
查看>>
分布式监控系统Zabbix-完整安装记录 -添加端口监控
查看>>
Python之反向迭代
查看>>
STM32F4 输入输出(GPIO)模式理解
查看>>
转义符
查看>>
poj 1019
查看>>
asp.net mvc上传文件
查看>>
bitmq集群高可用测试
查看>>
subline text3利用正则搜索
查看>>
项目管理思考——职责
查看>>
主成分分析(PCA)原理详解
查看>>
短信验证接口网址
查看>>
Geohash距离估算
查看>>
Demon_背包系统(实现装备栏,背包栏,可以切换装备)
查看>>
记录:一次数据库被恶意修改配置文件的问题
查看>>
redis 持久化
查看>>
http协议详解
查看>>
解决Jupyter notebook[import tensorflow as tf]报错
查看>>