博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P4015 运输问题(费用流)
阅读量:6544 次
发布时间:2019-06-24

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

 

源点向仓库连费用$0$,流量为储量的边,商店向汇点连费用$0$,流量为需求的边,然后仓库向商店连流量$inf$,费用对应的边,跑个费用流即可

1 //minamoto  2 #include
3 #include
4 #include
5 #include
6 #define inf 0x3f3f3f3f 7 using namespace std; 8 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) 9 char buf[1<<21],*p1=buf,*p2=buf; 10 inline int read(){ 11 #define num ch-'0' 12 char ch;bool flag=0;int res; 13 while(!isdigit(ch=getc())) 14 (ch=='-')&&(flag=true); 15 for(res=num;isdigit(ch=getc());res=res*10+num); 16 (flag)&&(res=-res); 17 #undef num 18 return res; 19 } 20 const int N=205,M=25005; 21 int ver[M],Next[M],head[N],edge[M],flow[M],tot=1; 22 int dis[N],disf[N],n,m,s,t,ans,Pre[N],last[N],vis[N],x; 23 queue
q; 24 inline void add(int u,int v,int e,int f){ 25 ver[++tot]=v,Next[tot]=head[u],head[u]=tot,edge[tot]=e,flow[tot]=f; 26 ver[++tot]=u,Next[tot]=head[v],head[v]=tot,edge[tot]=-e,flow[tot]=0; 27 } 28 bool spfa_min(){ 29 memset(dis,0x3f,sizeof(dis)); 30 memset(vis,0,sizeof(vis)); 31 memset(disf,0x3f,sizeof(disf)); 32 q.push(s),dis[s]=0,vis[s]=1,Pre[t]=-1; 33 while(!q.empty()){ 34 int u=q.front();q.pop();vis[u]=0; 35 for(int i=head[u];i;i=Next[i]){ 36 int v=ver[i]; 37 if(flow[i]>0&&dis[v]>dis[u]+edge[i]){ 38 dis[v]=dis[u]+edge[i],Pre[v]=u; 39 last[v]=i,disf[v]=min(disf[u],flow[i]); 40 if(!vis[v]) vis[v]=1,q.push(v); 41 } 42 } 43 } 44 return Pre[t]!=-1; 45 } 46 int dinic_min(){ 47 int maxflow=0,mincost=0; 48 while(spfa_min()){ 49 int u=t; 50 maxflow+=disf[t],mincost+=disf[t]*dis[t]; 51 while(u!=s){ 52 flow[last[u]]-=disf[t]; 53 flow[last[u]^1]+=disf[t]; 54 u=Pre[u]; 55 } 56 } 57 return mincost; 58 } 59 bool spfa_max(){ 60 memset(dis,0xef,sizeof(dis)); 61 memset(vis,0,sizeof(vis)); 62 memset(disf,0x3f,sizeof(disf)); 63 q.push(s),dis[s]=0,vis[s]=1,Pre[t]=-1; 64 while(!q.empty()){ 65 int u=q.front();q.pop();vis[u]=0; 66 for(int i=head[u];i;i=Next[i]){ 67 int v=ver[i]; 68 if(flow[i]>0&&dis[v]

 

转载于:https://www.cnblogs.com/bztMinamoto/p/9502067.html

你可能感兴趣的文章
小tips:JS中的children和childNodes
查看>>
二叉树的遍历
查看>>
Oracle的FIXED_DATE参数
查看>>
PostgresSQL中的限制和级联删除
查看>>
NDK配置
查看>>
(转)@ContextConfiguration注解说明
查看>>
docker in centos error
查看>>
c# 线程同步: 详解lock,monitor,同步事件和等待句柄以及mutex
查看>>
[置顶] ※数据结构※→☆线性表结构(queue)☆============队列 顺序存储结构(queue sequence)(八)...
查看>>
Log4perl 的使用
查看>>
Linux 系统的单用户模式、修复模式、跨控制台登录在系统修复中的运用
查看>>
《http权威指南》阅读笔记(十)
查看>>
JQuery UI Widget Factory官方Demo
查看>>
Atlas揭秘 —— 绑定(Binding)
查看>>
install xcode_3.2.5_and_iOS_sdk_4.2 _final with mac lion10.7.3
查看>>
JavaScript权威指南(第6版)
查看>>
sql 自定義百分比轉換小數函數
查看>>
一起谈.NET技术,C# 委托,事件和Lambda表达式
查看>>
远离云计算风险三步走
查看>>
Silverlight 游戏开发小技巧:技能冷却效果2(Cool“.NET研究”down)2
查看>>