博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 1927: [Sdoi2010]星际竞速
阅读量:6703 次
发布时间:2019-06-25

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

1 #include
2 #include
3 #define M 1605 4 #define S 3000005 5 using namespace std; 6 int q[S],f[M],n,m,ans,a[M],head[M],next[S],u[S],v[S],c[S],fr[S],cnt=1,d[M],fro[M],T; 7 void jia(int a1,int a2,int a3,int a4) 8 { 9 cnt++;10 next[cnt]=head[a1];11 head[a1]=cnt;12 u[cnt]=a2;13 v[cnt]=a3;14 c[cnt]=a4;15 fr[cnt]=a1;16 return;17 }18 bool bfs()19 {20 for(int i=1;i<=T;i++)21 d[i]=0x7fffffff;22 f[0]=1;23 int h=0,t=1;24 q[1]=0;25 for(;h!=t;)26 {27 h++;28 int p=q[h];29 f[p]=0;30 for(int i=head[p];i;i=next[i])31 if(v[i]&&d[u[i]]>d[p]+c[i])32 {33 fro[u[i]]=i;34 d[u[i]]=d[p]+c[i];35 if(!f[u[i]])36 {37 t++;38 q[t]=u[i];39 }40 }41 }42 if(d[T]==0x7fffffff)43 return 0;44 else45 return 1;46 }47 void zhao()48 {49 int ma=0x7fffffff;50 for(int i=fro[T];i;i=fro[fr[i]])51 ma=min(ma,v[i]);52 for(int i=fro[T];i;i=fro[fr[i]])53 {54 v[i]-=ma;55 v[i^1]+=ma;56 ans+=ma*c[i];57 }58 return;59 }60 int main()61 {62 scanf("%d%d",&n,&m);63 T=2*n+1;64 for(int i=1;i<=n;i++)65 scanf("%d",&a[i]);66 for(int i=1;i<=n;i++)67 {68 jia(0,i,1,0);69 jia(i,0,0,0);70 jia(i+n,T,1,0);71 jia(T,i+n,0,0);72 jia(0,i+n,1,a[i]);73 jia(i+n,0,0,-a[i]);74 }75 for(int i=1;i<=m;i++)76 {77 int a1,a2,a3;78 scanf("%d%d%d",&a1,&a2,&a3);79 if(a1>a2)80 swap(a1,a2);81 jia(a1,a2+n,1,a3);82 jia(a2+n,a1,0,-a3);83 }84 for(;bfs();)85 zhao();86 printf("%d\n",ans);87 return 0;88 }

费用流,拆点 源点分别向拆出的点连费用为0,费用为定位费的点,再把原有的航路建出来。

转载于:https://www.cnblogs.com/xydddd/p/5290270.html

你可能感兴趣的文章
国家级大数据工程研究中心落户京东
查看>>
gitlab 代码控制
查看>>
利用shell脚本“综合、集中”查看linux server常用软硬件信息
查看>>
三种方法部署YUM软件仓库
查看>>
NFS:Linux中最简单且实用的服务
查看>>
Openstack 实战讲解之-----------04-控制节点glance服务安装配置
查看>>
客户端Git的常用命令
查看>>
MongoDB分片副本集搭建
查看>>
ospf中创建末节区域
查看>>
mysql基本参数查询
查看>>
CUDA学习(六十六)
查看>>
是否将信息存储在云?
查看>>
懒癌患者有福了!iOS用户可以在苹果地图和Siri里直接打滴滴
查看>>
刚性通道时代——MSTP
查看>>
Struts2 下载取消报异常最终解决办法 1.2 版本
查看>>
利用pg_resetwal回到过去
查看>>
松滋有一刘氏分支是南宋名臣文天祥的后裔
查看>>
工作之命令小总结(7):tail命令
查看>>
C#3.0新特性小结(2)
查看>>
Linux基础命令之echo(涉及bash命令引用及替换部分内容)
查看>>