【CQOI2015】网络吞吐量
来源:互联网 发布:飞狐 指标数据输出 编辑:程序博客网 时间:2024/06/07 00:02
传送门:NKOJ3250
这是一道网络流水题(水题过不了系列=-=)。
题解:首先跑最短路(SPFA,dijkstra),然后枚举每一条边判断它是否是在最短路上,再用最短路上的边建好图跑一次最大流即可。
感谢@Mogician_Evian 帮我看丑代码。(模板题都要WA的我还是太菜了)
以下是我的丑代码:
#include<stdio.h>#include<cstring>#include<queue>#include<cmath>#define LL long longconst LL inf=1e18;const int MAXN=505<<1;const int MAXM=100005<<1;using namespace std;LL n,m,A[MAXM],B[MAXM],D[MAXM];LL Last[MAXN],Next[MAXM],To[MAXM],pid;LL Len[MAXM];void Storepath(LL u,LL v,LL l){ To[++pid]=v,Next[pid]=Last[u],Last[u]=pid,Len[pid]=l;}queue<LL>Q;LL dis[MAXN][3];bool ifin[MAXN];void SPFA(LL St,LL fl){ for(int i=2;i<=n;i++)dis[i][fl]=inf; dis[St][fl]=0,Q.push(St),ifin[St]=1; LL tmp; while(Q.size()){ tmp=Q.front(),Q.pop(),ifin[tmp]=0; for(int i=Last[tmp];i;i=Next[i]){ if(dis[To[i]][fl]>dis[tmp][fl]+Len[i]){ dis[To[i]][fl]=dis[tmp][fl]+Len[i]; if(!ifin[To[i]]){ Q.push(To[i]),ifin[To[i]]=1; } } } }}int CNT[MAXN],DIS[MAXN],START,END;LL W[MAXN],WW,ANS,WWW[MAXN][MAXN];LL SAP(LL U,LL FLOW){ if(U==END)return FLOW; LL OUT=0,TMP; for(int I=1;I<=n;I++){ if(DIS[I]+1!=DIS[U]||WWW[U][I]<=0)continue; OUT+=TMP=SAP(I,min(FLOW-OUT,WWW[U][I])); WWW[U][I]-=TMP,WWW[I][U]+=TMP; if(OUT==FLOW||DIS[START]>=END)return OUT; } if(!--CNT[DIS[U]])DIS[START]=END; CNT[++DIS[U]]++; return OUT;}LL ORZ[MAXN];int main(){ scanf("%lld%lld",&n,&m); for(int i=1;i<=m;i++){ scanf("%lld%lld%lld",&A[i],&B[i],&D[i]); Storepath(A[i],B[i],D[i]),Storepath(B[i],A[i],D[i]); } SPFA(1,1),SPFA(n,2); for(int i=1;i<=n;i++)scanf("%lld",&ORZ[i]); ORZ[1]=ORZ[n]=inf; for(int i=1;i<=m;i++) if(dis[A[i]][1]+D[i]+dis[B[i]][2]==dis[n][1]||dis[B[i]][1]+D[i]+dis[A[i]][2]==dis[n][1]) WWW[A[i]][B[i]]=WWW[B[i]][A[i]]=min(ORZ[A[i]],ORZ[B[i]]); START=1,END=n; while(DIS[START]<END)ANS+=SAP(START,inf); printf("%lld",ANS); return 0;}
阅读全文
0 0
- bzoj3931[CQOI2015]网络吞吐量
- bzoj3931【CQOI2015】网络吞吐量
- 3931: [CQOI2015]网络吞吐量
- 3931: [CQOI2015]网络吞吐量
- [CQOI2015]网络吞吐量
- 3931: [CQOI2015]网络吞吐量
- 【CQOI2015】网络吞吐量
- bzoj 3931: [CQOI2015]网络吞吐量
- 洛谷 P3171 [CQOI2015]网络吞吐量
- 洛谷 P3171 [CQOI2015]网络吞吐量
- bzoj 3931: [CQOI2015]网络吞吐量
- [BZOJ3931] [CQOI2015]网络吞吐量 && 网络流
- [BZOJ3931][CQOI2015][网络流]网络吞吐量[水题]
- bzoj3931: [CQOI2015]网络吞吐量 网络流
- 【bzoj3931】【CQOI2015】【网络吞吐量】【spfa+最大流】
- cqoi2015网络吞吐量(bzoj3931,洛谷3171)
- [bzoj3931][CQOI2015]网络吞吐量 spfa+最大流
- BZOJ 3931 CQOI2015 网络吞吐量 Dijkstra+网络流
- 自主编程实现数组队列和链式队列
- RACScheduler
- 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
- 【图解】Eclipse下JRebel6.2.0热部署插件安装、破解及配置【转】
- ListView,GridView万能适配器
- 【CQOI2015】网络吞吐量
- Python爬虫002浏览器的模拟Header属性
- 利用Defraggler整理文件夹的方法
- redis配置详解
- tensorflow tf.group
- POJ 4.6 702 Crossing River
- 如何使用Gilisoft File Lock Pro加密文件和文件夹
- SVN强制限制提交时的注释长度
- 替换空格