博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P4012 深海机器人问题(费用流)
阅读量:6756 次
发布时间:2019-06-26

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

 

图给的好坑……还得倒过来……

用大佬的图做个示范

我们考虑左图吧

把每一个点向下连边,容量$1$,费用为给出的价值(表示一个机器人可以过去取得标本)

再连一条边,容量$inf$,费用$0$(表示剩下的机器人过去无法取得标本)

然后向右连的边也一样

注意连边的顺序

然后源点向所有出发点连边,容量为机器人数,费用$0$,所有目的地向汇点连边,容量为机器人数,费用为$0$

跑个最大费用流

1 //minamoto 2 #include
3 #define inf 0x3f3f3f3f 4 #define get(i,j) (i-1)*m+j 5 using namespace std; 6 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) 7 char buf[1<<21],*p1=buf,*p2=buf; 8 inline int read(){ 9 #define num ch-'0'10 char ch;bool flag=0;int res;11 while(!isdigit(ch=getc()))12 (ch=='-')&&(flag=true);13 for(res=num;isdigit(ch=getc());res=res*10+num);14 (flag)&&(res=-res);15 #undef num16 return res;17 }18 const int N=1005,M=100005;19 int ver[M],edge[M],head[N],Next[M],flow[M],tot=1;20 int dis[N],disf[N],vis[N],Pre[N],last[N],n,m,s,t,a,b;21 queue
q;22 inline void add(int u,int v,int f,int e){23 ver[++tot]=v,Next[tot]=head[u],head[u]=tot,flow[tot]=f,edge[tot]=e;24 ver[++tot]=u,Next[tot]=head[v],head[v]=tot,flow[tot]=0,edge[tot]=-e;25 }26 bool spfa(){27 memset(dis,0xef,sizeof(dis));28 q.push(s),dis[s]=0,disf[s]=inf,Pre[t]=-1;29 while(!q.empty()){30 int u=q.front();q.pop();vis[u]=0;31 for(int i=head[u];i;i=Next[i]){32 int v=ver[i];33 if(flow[i]&&dis[v]

 

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

你可能感兴趣的文章
大图片生成缩略图 导致imagecreatefromjpeg 内存崩溃问题
查看>>
我的友情链接
查看>>
手工恢复
查看>>
二 IOC再探
查看>>
一些常用软件的网络端口协议分类介绍
查看>>
机器学习服务器 PredictionIO 脱颖而出
查看>>
mysql不能连接远程mysql服务器
查看>>
Windows 8.1 重复数据删除——概念(一)
查看>>
iptables防火墙高级应用
查看>>
python运维-Socket网络编程
查看>>
yum管理包流程_学习笔记
查看>>
DeltaGrad领跑智能化交易领域 预见收益颠覆基金行业
查看>>
nginx keepalived tomcat实现的高可用
查看>>
Https能避免流量劫持吗?
查看>>
oracle教程之oracle 删除表空间
查看>>
我的友情链接
查看>>
python 2.7.10 找不到 libmysqlclient.18.dylib 解决方案
查看>>
Exchange server 2010 安装部署之二,Exchange2010安装详解
查看>>
负载均衡集群之LVS
查看>>
本地计算机无法启动Server服务
查看>>