博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1853Cyclic Tour(网络流之最小费用流)
阅读量:7227 次
发布时间:2019-06-29

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

题目地址:

费用流果然好奇妙。

。还能够用来推断环。。。假设每一个点都是环的一部分并且每一个点仅仅能用到一次的话,那每一个点的初度入度都是1,这就能够利用网络流来解决,仅仅要拆点令其流量为1。就限制了每一个点仅仅能用一次,每次左边的连到右边的。就相当于左边点的一次初度和右边的点的一次入度。非常easy想象出来。

最后仅仅要推断总流量是否为n就可以。由于假设总流量为n的话。说明每一个点都出了一次度。每一个点都入了一次度。并且由于拆点的流量限制。充分说明了每一个点的初度入度都是1.进而说明了每一个点都在环里。然后输出最后的最小费用流即为最短距离。

代码例如以下:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int INF=0x3f3f3f3f;int head[300], s, t, cnt, flow, cost;int vis[300], d[300], q[100000], cur[300];struct node{ int u, v, cap, cost, next;}edge[100000];void add(int u, int v, int cap, int cost){ edge[cnt].v=v; edge[cnt].cap=cap; edge[cnt].cost=cost; edge[cnt].next=head[u]; head[u]=cnt++; edge[cnt].v=u; edge[cnt].cap=0; edge[cnt].cost=-cost; edge[cnt].next=head[v]; head[v]=cnt++;}int spfa(){ memset(d,INF,sizeof(d)); memset(vis,0,sizeof(vis)); d[s]=0; cur[s]=-1; int f1=0 ,f2=0, i, minflow=INF; q[f1++]=s; while(f1>=f2) { int u=q[f2++]; vis[u]=0; for(i=head[u];i!=-1;i=edge[i].next) { int v=edge[i].v; if(d[v]>d[u]+edge[i].cost&&edge[i].cap) { d[v]=d[u]+edge[i].cost; if(minflow>edge[i].cap) { minflow=edge[i].cap; } cur[v]=i; if(!vis[v]) { q[f1++]=v; vis[v]=1; } } } } if(d[t]==INF) return 0; flow+=minflow; cost+=minflow*d[t]; for(i=cur[t];i!=-1;i=cur[edge[i^1].v]) { edge[i].cap-=minflow; edge[i^1].cap+=minflow; } return 1;}int main(){ int n, m, i, a, b, c; while(scanf("%d%d",&n,&m)!=EOF) { memset(head,-1,sizeof(head)); cnt=0; s=0; t=2*n+1; flow=0; cost=0; for(i=1;i<=n;i++) { add(s,i,1,0); add(i+n,t,1,0); } while(m--) { scanf("%d%d%d",&a,&b,&c); add(a,b+n,1,c); } while(spfa()); if(flow!=n) printf("-1\n"); else printf("%d\n",cost); } return 0;}

转载地址:http://kddfm.baihongyu.com/

你可能感兴趣的文章
能力工场--关于在JavaScript中使用EL表达式的问题
查看>>
NFS服务器设置
查看>>
s:iterator 中的status 使用方法
查看>>
cocos2d-x 源码剖析系列
查看>>
IT系统架构设计
查看>>
Nginx虚拟主机配置实践(一)
查看>>
细谈Spring(一)spring简介
查看>>
网络工程师的面试题
查看>>
nginx启动脚本
查看>>
常用输入法框架简介
查看>>
记录新机房建设。20130629
查看>>
安装ntop
查看>>
ssh远程登录讲解
查看>>
mysql的备份脚本
查看>>
linux下mysql的root密码忘记解决方法
查看>>
7.索引的性能分析
查看>>
在 Delphi 下使用 DirectSound (17): 频率均衡效果器 IDirectSoundFXParamEq8
查看>>
文件操作命令一cp 2
查看>>
Multi-Mechanize工程目录结构说明
查看>>
halt
查看>>