博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSU Double Shortest Paths 湖南省第十届省赛
阅读量:5977 次
发布时间:2019-06-20

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

第二道最小费用最大流,spfa+EK的组合比想象中快很多

开始开边表为点的8倍,RE,不知道为什么

#include
#include
#include
#include
using namespace std;const int maxn=508;const int INF=0x3f3f3f3f;struct fuck{ int u,v,cap,cost,next;}edge[maxn<<4];int head[maxn];int dis[maxn],pre[maxn],vis[maxn];int tol;int n;void init(){ tol=0; memset(head,-1,sizeof(head));}void addedge(int u,int v,int w,int c){ edge[tol].u=u; edge[tol].v=v; edge[tol].cap=c; edge[tol].cost=w; edge[tol].next=head[u]; head[u]=tol++; edge[tol].u=v; edge[tol].v=u; edge[tol].cap=0; edge[tol].cost=-w; edge[tol].next=head[v]; head[v]=tol++;}bool spfa(){ queue
q; q.push(0); memset(dis,INF,sizeof(dis)); memset(vis,false,sizeof(vis)); dis[0]=0;vis[0]=true;pre[0]=-1; int i,u,v; while(!q.empty()) { u=q.front();q.pop(); vis[u]=false; for(i=head[u];i!=-1;i=edge[i].next) { v=edge[i].v; if(edge[i].cap>0&&dis[v]>dis[u]+edge[i].cost) { dis[v]=dis[u]+edge[i].cost; pre[v]=i; if(!vis[v]) q.push(v); } } } if(dis[n]>=INF) return false; return true;}int min_costflow(){ int co,fl,u,i; co=fl=0; memset(dis,INF,sizeof(dis)); while(spfa()) { int mi=INF; bool flag=true; for(i=n;i!=0;i=edge[pre[i]].u) mi=min(mi,edge[pre[i]].cap); for(i=n;i!=0;i=edge[pre[i]].u) { edge[pre[i]].cap-=mi; edge[pre[i]^1].cap+=mi; } fl+=mi; co+=dis[n]; } return co;}int main(){ int i,j,m,u,v,w,p; int cas=1; while(scanf("%d%d",&n,&m)==2) { init(); addedge(0,1,0,2); for(i=1;i<=m;i++) { scanf("%d%d%d%d",&u,&v,&w,&p); { addedge(u,v,w,1); addedge(u,v,w+p,1); } } addedge(n,n+1,0,2); n++; printf("Case %d: %d\n",cas++,min_costflow()); } return 0;}

 

转载于:https://www.cnblogs.com/bitch1319453/p/4753603.html

你可能感兴趣的文章
2017春节~人生智慧箴言
查看>>
.NET Core 之 MSBuild 介绍
查看>>
mongodb概念
查看>>
突破MIME限制上传
查看>>
EF Code First学习笔记:数据库创建
查看>>
终结符、非终结符
查看>>
Node.js刷新session过期时间
查看>>
详解Javascript中的Array对象
查看>>
iOS:即时通讯之<了解篇 SocKet>
查看>>
@EnableTransactionManagement注解理解
查看>>
vue前后分离动态路由和权限管理方案
查看>>
《JavaScript高级程序设计》读书笔记(十):本地对象Date
查看>>
linux中fork()函数详解
查看>>
从1G到5G,46年屏幕变迁下,富士康、苹果、三星、华为的浴火重生路 ...
查看>>
Flutter下实现低延迟的跨平台RTSP/RTMP播放
查看>>
大牛直播跨平台RTSP/RTMP转RTMP转发SDK
查看>>
Cloud Toolkit 上传文件到远程服务器
查看>>
如何优雅拒绝产品经理的不合理需求
查看>>
计算机网络参考模型
查看>>
CVPR论文 | 如何处理多种退化类型的卷积超分辨率?
查看>>