[上下界费用流] BZOJ2055 80人环游世界
来源:互联网 发布:json remove 编辑:程序博客网 时间:2024/04/28 05:10
%%% http://blog.csdn.net/popoqqq/article/details/44000835
#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#define V G[p].v#define oo 1<<30using namespace std;inline char nc(){static char buf[100000],*p1=buf,*p2=buf;if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF; }return *p1++;}inline void read(int &x){char c=nc(),b=1;for (;!(c>='0' && c<='9');c=nc()) if (c=='-') b=-1;for (x=0;c>='0' && c<='9';x=x*10+c-'0',c=nc()); x*=b;}struct edge{int u,v,w,f;int next;};edge G[1000005];int head[215],inum=1;inline void add(int u,int v,int f,int w,int p){G[p].u=u; G[p].v=v; G[p].f=f; G[p].w=w; G[p].next=head[u]; head[u]=p;}inline void link(int u,int v,int f,int w){add(u,v,f,w,inum+=2),add(v,u,0,-w,inum-1);}int s,t,S,T,Mincost;const int NQ=1000;int Q[NQ],l,r;int dis[215],ins[215],pre[215];inline bool SPFA(){int u;for (int i=1;i<=T;i++) dis[i]=1<<30,pre[i]=0,ins[i]=0;memset(Q,0,sizeof(Q));l=r=-1; Q[(++r)%NQ]=S; dis[S]=0; ins[S]=1;while (l!=r){u=Q[(++l)%NQ]; ins[u]=0;for (int p=head[u];p;p=G[p].next)if (G[p].f && dis[V]>dis[u]+G[p].w){dis[V]=dis[u]+G[p].w; pre[V]=p;if (!ins[V])Q[(++r)%NQ]=V,ins[V]=1;}}if (dis[T]==1<<30) return false;int minimum=1<<30;for (int p=pre[T];p;p=pre[G[p].u])minimum=min(minimum,G[p].f);for (int p=pre[T];p;p=pre[G[p].u]){G[p].f-=minimum; G[p^1].f+=minimum;Mincost+=G[p].w*minimum;}return true;}int n,m;int main(){int x;freopen("t.in","r",stdin);freopen("t.out","w",stdout);read(n); read(m);s=2*n+1,t=2*n+2; S=2*n+3; T=2*n+4;link(t,s,m,0);for (int i=1;i<=n;i++){read(x);link(S,i<<1,x,0);link(i*2-1,T,x,0);link(s,i*2-1,oo,0);link(i<<1,t,oo,0);}for (int i=1;i<=n;i++)for (int j=i+1;j<=n;j++){read(x);if (~x) link(i<<1,j*2-1,oo,x);}while (SPFA());printf("%d\n",Mincost);return 0;}
0 0
- [上下界费用流] BZOJ2055 80人环游世界
- [bzoj2055]80人环游世界 上下界费用流
- [上下界费用流] BZOJ2055. 80人环游世界
- 【bzoj2055】80人环游世界 有上下界的费用流
- 【bzoj2055】80人环游世界 有源汇上下界费用流
- 【bzoj2055】【80人环游世界】【有上下界的费用流】
- 【BZOJ2055】80人环游世界【有上下界的最小费用最大流】
- [BZOJ2055]80人环游世界(有源汇有上下界的费用流)
- bzoj2055 80人环游世界(有源汇有上下界最小费用流)
- bzoj2055 80人环游世界
- BZOJ2055【上下界费用流】
- BZOJ 2055 80人环游世界 有上下界的费用流
- 2055: 80人环游世界|有上下界的费用流
- 2055: 80人环游世界 有上下界的费用流
- bzoj 2055: 80人环游世界 (有上下界的费用流)
- BZOJ 2055: 80人环游世界 有源汇上下界费用流
- bzoj 2055 80人环游地球(上下界费用流)
- BZOJ 2055(80人环游世界-上下界网络流)
- Android 开发中使用 SQLite 数据库
- apache 启用 gzip压缩
- Meteor 组件 iron router 路由
- JavaScript进阶(九)JS实现本地文件上传至阿里云服务器
- Android文字长度未超过屏幕宽度也可以滚动的TextView
- [上下界费用流] BZOJ2055 80人环游世界
- JAVA数组
- leetcode102.BinaryTreeLevelOrderTraversal
- 分治法 & 归并排序
- 如何同时启动多个Tomcat服务
- 数据结构(9)线性表之循环链表介绍
- 数据库几个函数记录
- 关于在线编辑功能
- linux MISC 驱动模型分析