Acme Corporation UVA - 11613 费用流
Posted guangheli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Acme Corporation UVA - 11613 费用流相关的知识,希望对你有一定的参考价值。
Code:
#include<cstdio> #include<cstring> #include<vector> #include<queue> #include<algorithm> using namespace std; const int maxn=500; const int INF=10000000+23666; typedef long long ll; int s,t,n; struct Edge{ int from,to,cost; ll cap; Edge(int u,int v,ll c,int f):from(u),to(v),cap(c),cost(f){} }; struct MCMF{ vector<Edge>edges; vector<int>G[maxn]; ll d[maxn],inq[maxn],a[maxn],flow2[maxn]; queue<int>Q; ll ans=0; int flow=0; void init(){ memset(a,0,sizeof(a)); edges.clear(); for(int i=0;i<maxn;++i)G[i].clear(); ans=0,flow=0; } void addedge(int u,int v,int c,int f){ edges.push_back(Edge(u,v,c,f)); //正向弧 edges.push_back(Edge(v,u,0,-f)); //反向弧 int m=edges.size(); G[u].push_back(m-2); G[v].push_back(m-1); } int SPFA(){ for(int i=0;i<=n;++i)d[i]=INF,flow2[i]=INF; memset(inq,0,sizeof(inq));int f=INF; d[s]=0,inq[s]=1;Q.push(s); while(!Q.empty()){ int u=Q.front();Q.pop();inq[u]=0; int sz=G[u].size(); for(int i=0;i<sz;++i){ Edge e=edges[G[u][i]]; if(e.cap>0&&d[e.to]>d[u]+e.cost){ a[e.to]=G[u][i]; d[e.to]=d[u]+e.cost; flow2[e.to]=min(flow2[u],e.cap); if(!inq[e.to]){inq[e.to]=1;Q.push(e.to);} } } } if(d[t]>=0)return 0; f=flow2[t]; flow+=f; int u=edges[a[t]].from; edges[a[t]].cap-=f; edges[a[t]^1].cap+=f; while(u!=s){ edges[a[u]].cap-=f; edges[a[u]^1].cap+=f; u=edges[a[u]].from; } ans+=(ll)(d[t]*f); return 1; } ll maxflow(){ while(SPFA()); return -ans; } }op; int main() { int T;scanf("%d",&T); for(int cas=1;cas<=T;++cas) { op.init();int cnt=0; int m,I;scanf("%d%d",&m,&I); s=0,n=2*m+1,t=n; for(int i=1;i<=m;++i){ cnt+=2; int mi,ni,pi,si,E; scanf("%d%d%d%d%d",&mi,&ni,&pi,&si,&E); op.addedge(s,cnt,ni,mi); op.addedge(cnt-1,t,si,-pi); int a=cnt-1; for(int j=0;j<=E&&a<t;++j){ op.addedge(cnt,a,INF,j*I); a+=2; } } printf("Case %d: %lld ",cas,op.maxflow()); } return 0; }
以上是关于Acme Corporation UVA - 11613 费用流的主要内容,如果未能解决你的问题,请参考以下文章
Certbot 未创建 acme-challenge 文件夹
Microsoft Corporation 去掉 windows 修改 启动加载 版权
Boyd Corporation在越南建立先进工厂,扩大全球业务版图
ZOLL Medical Corporation签署收购Itamar Medical的最终协议
经美国海外投资委员会批准,韩华Systems向Kymeta Corporation投资3,000万美元
IG Wealth Management与Carbon Streaming Corporation合作推出基金组合,以响应实现净零排放的全球努力