[BZOJ3931]CQOI2015网络吞吐量|最短路|最大流
来源:互联网 发布:淘宝店铺更改所在地 编辑:程序博客网 时间:2024/06/05 17:56
网络流大裸题。。把在最短路上的边拉出来建图就行了。。
#include<cstdio>#include<iostream>#define N 505#define M 100005#define inf 0x7fffffff#define INF 0x3f3f3f3f3f3f3f3fll#define ll long longusing namespace std;struct edge{ int e,q,next; ll f;}ed[M*2+N*2],ed1[M*2];int n,m,s,e,q,i,ne=1,ned=0,nd,a[N*2],h[N],que[N*10],d[N*2],u[N*2],inq[N];void add1(int s,int e,int q){ ed1[++ned].e=e;ed1[ned].q=q; ed1[ned].next=h[s];h[s]=ned;}void add(int s,int e,ll f){ ed[++ne].e=e;ed[ne].f=f; ed[ne].next=a[s];a[s]=ne;}void ins(int s,int e,ll f){ add(s,e,f);add(e,s,0);}void spfa(int s,int t){ int head=1,tail=1,hh=1,tt=1,get,i,j,to; for (i=1;i<=n;i++) d[i]=inf,inq[i]=0; que[1]=s;inq[s]=1;d[s]=0; while (hh<=tt) { get=que[head++]; hh++;if (head>5000) head=1; for (j=h[get];j;j=ed1[j].next) if (d[get]+ed1[j].q<d[to=ed1[j].e]) { d[to]=d[get]+ed1[j].q; if (!inq[to]) { tail++;tt++;if (tail>5000) tail=1; que[tail]=to;inq[to]=1; } } inq[get]=0; } for (i=1;i<=n;i++) for (j=h[i];j;j=ed1[j].next) if (d[i]+ed1[j].q==d[ed1[j].e]) ins(i+n,ed1[j].e,INF);}bool bfs(int s,int t){ int head=1,tail=1,get; for (int i=1;i<=nd;i++) u[i]=0,d[i]=0; u[s]=1;que[1]=s; while (head<=tail) { get=que[head++]; for (int j=a[get];j;j=ed[j].next) if (ed[j].f&&!u[ed[j].e]) { d[ed[j].e]=d[get]+1; u[ed[j].e]=1;que[++tail]=ed[j].e; } } return d[t]!=0;}ll extend(int x,ll minf,int t){ if (x==t) return minf; ll del,f=minf; for (int j=a[x];j;j=ed[j].next) if(ed[j].f&&d[ed[j].e]==d[x]+1) { del=extend(ed[j].e,min(minf,ed[j].f),t); ed[j].f-=del;ed[j^1].f+=del; minf-=del; if (!minf) break; } if (f==minf) d[x]=0; return f-minf;}ll dinic(int s,int t){ ll ans=0; while (bfs(s,t)) ans+=extend(s,INF,t); return ans;}int main(){ scanf("%d%d",&n,&m); nd=2*n; for (i=1;i<=m;i++) { scanf("%d%d%d",&s,&e,&q); add1(s,e,q);add1(e,s,q); } for (i=1;i<=n;i++) { scanf("%d",&q); if (i!=1&&i!=n) ins(i,i+n,(ll)q);else ins(i,i+n,INF); } spfa(1,n); printf("%lld\n",dinic(1,nd));}
0 0
- [BZOJ3931]CQOI2015网络吞吐量|最短路|最大流
- 【BZOJ3931】【CQOI2015】网络吞吐量 最短路+网络流
- 【BZOJ3931】【CQOI2015】网络吞吐量(最短路,网络流)
- 【bzoj3931】【CQOI2015】【网络吞吐量】【spfa+最大流】
- [bzoj3931][CQOI2015]网络吞吐量 spfa+最大流
- [BZOJ3931][CQOI2015]网络吞吐量(SPFA+网络最大流)
- [BZOJ3931][CQOI2015]网络吞吐量(spfa+最大流)
- bzoj3931[CQOI2015]网络吞吐量
- bzoj3931【CQOI2015】网络吞吐量
- 3931: [CQOI2015]网络吞吐量 最短路+最大流
- BZOJ 3931 [CQOI2015]网络吞吐量 最短路+最大流
- BZOJ 3931 [CQOI2015]网络吞吐量 最短路+最大流
- [BZOJ3931] [CQOI2015]网络吞吐量 && 网络流
- [BZOJ3931][CQOI2015][网络流]网络吞吐量[水题]
- bzoj3931: [CQOI2015]网络吞吐量 网络流
- BZOJ3931 网络吞吐量(最大流)
- bzoj 3931: [CQOI2015]网络吞吐量(最短路+网络流)
- BZOJ 3931: [CQOI2015]网络吞吐量【最短路+网络流
- ReactJS读书笔记三:组件的组合和通信
- 【华为OJ】小球落地5次
- Access Remote Database Table in ABAP Program Via DBLink of ORACLE
- 激光雷达学习笔记(一)数据采集
- Unity3d_UGUI加载场景进度条
- [BZOJ3931]CQOI2015网络吞吐量|最短路|最大流
- tomcat-5.0.28在https模式下IE8无法下载文件问题解决
- 喜羊羊系列之【设备 - 驱动 编入内核】
- 任意模型的折纸效果 Folding effect
- 解决同一IP不同端口访问的站点iframe应用session丢失的问题
- OpenCL异构计算资料收集
- lufylegend引擎俄罗斯方块的实现
- javascript轮播技术
- Making a Kali Bootable USB Drive