[SDOI2009]晨跑 bzoj 1877 费用流
来源:互联网 发布:cpb 面膜 知乎 编辑:程序博客网 时间:2024/06/06 03:14
题目大意
给出一个有向图,求从起点到终点最多能找到多少条不相交的路径和这些路径的最小总长度。
分析
第一问是最大流
第二问是最大最小费用流。
把一个点拆成入点和出点,中间连一条流量为1的边就可以限制路径不相交了(常用方法)
code
#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>#include<queue>using namespace std;const int maxm=50000+10,maxn=800+10;struct arr{ int x,y,w; int c; int next;}edge[maxm*3];int ls[maxm*3];int f[maxm*3];int dis[maxn*2];int pro[maxn*2];int edge_m=1;int n,m;void add(int x,int y,int w,int c){ edge_m++; edge[edge_m]=(arr){x,y,w,c,ls[x]},f[edge_m]=c,ls[x]=edge_m; edge_m++; edge[edge_m]=(arr){y,x,-w,-c,ls[y]},f[edge_m]=0,ls[y]=edge_m;}int v[maxn*2];int s,t;int spfa(){ queue<int> q; memset(dis,127/2,sizeof(dis)); memset(v,0,sizeof(v)); memset(pro,0,sizeof(pro)); dis[s]=0; q.push(s); v[s]=1; do{ int x=q.front(); q.pop(); for (int i=ls[x];i;i=edge[i].next) { if ((f[i])&&(dis[edge[i].y]>dis[x]+edge[i].w)) { dis[edge[i].y]=dis[x]+edge[i].w; pro[edge[i].y]=i; if (!v[edge[i].y]) { v[edge[i].y]=1; q.push(edge[i].y); } } } v[x]=0; }while(!q.empty()); if (dis[t]==dis[0]) return 0; else return 1;}int ans1=0,ans2=0;void mcf(){ int mi=200000000; int x=t; while (pro[x]!=0) { mi=min(f[pro[x]],mi); x=edge[pro[x]].x; } ans2=ans2+mi; x=t; while (pro[x]!=0) { f[pro[x]]-=mi; f[pro[x]^1]+=mi; ans1+=mi*edge[pro[x]].w; x=edge[pro[x]].x; }}int work(){ while (spfa()) { mcf(); }} int main(){ scanf("%d%d",&n,&m); for (int i=1;i<=m;i++) { int x,y,w; scanf("%d%d%d",&x,&y,&w); add(x,y+n,w,1); } for (int i=2;i<=n-1;i++) { add(i+n,i,0,1); } s=1;t=2*n; add(s+n,s,0,200000000); add(t,n,0,200000000); work(); printf("%d %d\n",ans2,ans1); return 0;}
阅读全文
0 0
- bzoj 1877: [SDOI2009]晨跑 费用流
- Bzoj 1877: [SDOI2009]晨跑(费用流)
- [BZOJ 1877][SDOI2009]晨跑(费用流)
- BZOJ 1877 [SDOI2009]晨跑 费用流
- [SDOI2009]晨跑 bzoj 1877 费用流
- BZOJ 1877: [SDOI2009]晨跑 费用流拆点
- 1877: [SDOI2009]晨跑 费用流
- bzoj 1877: [SDOI2009]晨跑 (最小费用最大流) [省选计划系列]
- 1877: [SDOI2009]晨跑 (最小费用最大流)
- [BZOJ 1877][SDOI2009]晨跑
- 【BZOJ 1877】 [SDOI2009]晨跑
- bzoj 1877: [SDOI2009]晨跑
- 【BZOJ 1877】 [SDOI2009]晨跑
- bzoj 1877: [SDOI2009]晨跑
- BZOJ 1877: [SDOI2009]晨跑
- BZOJ 1877 [SDOI2009]晨跑
- [BZOJ1877]SDOI2009晨跑|费用流
- bzoj1877[SDOI2009]晨跑【费用流】
- Centos 挂载镜像安装 yum
- 快速排序(Java),针对重复元素
- 如何突破JAVA程序员三年的门槛
- 谋杀案和杨辉三角改进版
- Android开发中第三方炫酷的控件
- [SDOI2009]晨跑 bzoj 1877 费用流
- 【Scikit-Learn 中文文档】监督学习:从高维观察预测输出变量
- RoboCup Rescue Simulator Tutorial core
- MT8735 andorid7.0 充电调试总结(2)——电池驱动流程关键代码分析
- ISP、IAP、ICP烧写方式的区别
- 二进制和数据储存的关系
- Java程序员从阿里、京东、美团面试回来,这些面试题你会吗?
- Scaling up Machine Learning.pdf 英文原版 免费下载
- BZOJ4071: [Apio2015]巴邻旁之桥