博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分配问题
阅读量:5766 次
发布时间:2019-06-18

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

https://www.luogu.org/problemnew/show/P4014

最小费用最大流

最大费用最小流

#include 
using namespace std;const int maxn = 300;const int inf = 0x3f3f3f3f;int n,m;int ck(int x){ return x;}int ls(int x){ return m+x;}int head[maxn];int tot =0;struct edge{ int v,nex,w,c;}e[maxn*maxn];void addedge(int u,int v,int w,int c){ e[tot] = (edge){v,head[u],w,c}; head[u] = tot++; e[tot] = (edge){u,head[v],0,-c}; head[v] = tot++;}int vis[maxn];int dis[maxn];int pre[maxn];bool spfa(int S,int T){ memset(dis,0x3f,sizeof(dis)); memset(vis,0,sizeof(vis)); queue
q; vis[S] = 1; q.push(S); dis[S] = 0; while(!q.empty()){ int now = q.front(); q.pop(); vis[now] = 0; for(int i=head[now];i!=-1;i=e[i].nex){ int w = e[i].w; int c = e[i].c; int v = e[i].v; if(w>0 && dis[v]>dis[now]+c){ dis[v] = dis[now]+c; pre[v] = i; if(vis[v]==0){ vis[v] = 1; q.push(v); } } } } return dis[T]==0x3f3f3f3f?false:true;}int ed(int S,int T,int &maxflow){ int ret = 0; int flow = 0x3f3f3f3f; int p; for(int i=T;i!=S;i=e[p^1].v){ p = pre[i]; flow = min(flow,e[p].w); } for(int i=T;i!=S;i=e[p^1].v){ p = pre[i]; ret+=flow*e[p].c; e[p].w-=flow; e[p^1].w+=flow; } maxflow+=flow; return ret;}void solve(int S,int T,int k){ int maxflow = 0; int ans = 0; while(spfa(S,T)){ ans+=ed(S,T,maxflow); } printf("%d\n",ans*k);}int aa[maxn],bb[maxn],cc[maxn][maxn];void solve2(int S,int T){ memset(head,-1,sizeof(head)); tot = 0; for(int i=1;i<=m;i++){ addedge(S,ck(i),1,0); } for(int i=1;i<=n;i++){ addedge(ls(i),T,1,0); } for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ addedge(ck(i),ls(j),1,-cc[i][j]); } } solve(S,T,-1);}int main(){ memset(head,-1,sizeof(head)); scanf("%d",&m); n=m; int S = 0; int T = m+n+1; for(int i=1;i<=m;i++){ addedge(S,ck(i),1,0); } for(int i=1;i<=n;i++){ int t; addedge(ls(i),T,1,0); } for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ int t; scanf("%d",&t); cc[i][j] = t; addedge(ck(i),ls(j),1,t); } } solve(S,T,1); solve2(S,T); return 0;}

  

转载于:https://www.cnblogs.com/tjucxz/p/8666814.html

你可能感兴趣的文章
Scenario 9-Shared Uplink Set with Active/Active uplink,802.3ad(LACP)-Flex-10
查看>>
UML类图中的六种关系
查看>>
探寻Interpolator源码,自定义插值器
查看>>
一致性哈希
查看>>
mysql(待整理)
查看>>
看雪论坛502,出现安全宝?
查看>>
使用PullToRefresh实现下拉刷新和上拉加载
查看>>
mysql
查看>>
2012年电信业八大发展趋势
查看>>
Web日志安全分析工具 v2.0发布
查看>>
JS重载
查看>>
python2和python3同安装在Windows上,切换问题
查看>>
php加速工具xcache的安装与使用(基于LNMP环境)
查看>>
android超链接
查看>>
redhat tomcat
查看>>
统计数据库大小
查看>>
IO流的学习--文件夹下文件的复制
查看>>
第十六章:脚本化HTTP
查看>>
EXCEL表中如何让数值变成万元或亿元
查看>>
Cisco PIX防火墙的安装流程
查看>>