bzoj1877 [SDOI2009]晨跑 费用流
注意这个题要求每个点也只经过一次,所以直接复制点就行了
其他的都和普通费用流一样了
码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int tot=-1,xia[405],zhong[100005],v[100005],c[100005],x,y,z,ans1,ans2,hou[100004],i,j,n,m,d[505],s,t,qj[505];
bool vis[405];
void jian(int a,int b,int C,int d)
{++tot,hou[tot]=xia[a],xia[a]=tot,zhong[tot]=b,v[tot]=C,c[tot]=d;
}
queue<int>q;
void jia(int a,int b,int c,int d)
{
jian(a,b,c,d);
jian(b,a,0,-d);
}
bool spfa()
{for(i=1;i<=2*n;i++)d[i]=999999999;q.push(s);d[s]=0;while(!q.empty()){int st=q.front();vis[st]=0;q.pop();for(i=xia[st];i!=-1;i=hou[i]){if(v[i]==0)continue;int nd=zhong[i];if(d[nd]>d[st]+c[i]){d[nd]=d[st]+c[i];qj[nd]=i;if(vis[nd]==0){vis[nd]=1;q.push(nd); } }}}qj[s]=-1;
if(d[t]==999999999)return 0; int o=qj[t];while(o!=-1){v[o]--;v[o^1]++;o=qj[zhong[o^1]];}ans2+=d[t];ans1++;return 1;
}
void mcmf()
{while(spfa());
}
int main()
{memset(xia,-1,sizeof(xia));scanf("%d%d",&n,&m);s=1+n;t=n;for(i=2;i<n;i++)jia(i,i+n,1,0);for(i=1;i<=m;i++){scanf("%d%d%d",&x,&y,&z);jia(x+n,y,1,z); }mcmf(); printf("%d %d",ans1,ans2);
}
bzoj1877 [SDOI2009]晨跑 费用流相关推荐
- P2153 晨跑,费用流裸题
晨跑 题目连接 https://www.luogu.org/problemnew/show/P2153 题解 求最大不相交路径数,并在路径数最大前提下,求总路程最短. 太裸了. 求不相交路径数:将除1 ...
- 【BZOJ 1877】 [SDOI2009]晨跑(费用流)
题目描述 Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街 ...
- BZOJ1877:[SDOI2009]晨跑——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=1877 https://www.luogu.org/problemnew/show/P2153 Ela ...
- 洛谷 [SDOI2009]晨跑
题目描述 Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街 ...
- bzoj 1877: [SDOI2009]晨跑 (网络流)
明显拆点费用流: typearr=recordtoward,next,cap,cost:longint;end;constmm=1<<30;maxn=1000;maxm=300000;va ...
- [SDOI2009]晨跑
题目链接 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 inline ll rea ...
- BZOJ 1061费用流
思路: 我们可以列出几个不等式 用y0带进去变成等式 下-上 可以消好多东西 我们发现 等式左边的加起来=0 可以把每个方程看成一个点 正->负 连边 跑费用流即可 //By SiriusRen ...
- POJ 2135 简单费用流
题意: 题意是一个人他要从牧场1走到牧场n然后在走回来,每条路径只走一次,问全程的最短路径是多少. 思路: 这个题目挺简单的吧,首先要保证每条边只能走一次,然后还要要求费用最 ...
- hdu4067 费用流(混合欧拉的宽展和延伸)
题意: 给以一个图,每个有向边都有两个权值,a,b其中a是保留这条边的花费,b是删除这条边的花费,让你删去一些边使图满足一下要求: (1)只有一个起点和一个终点 (2)所有的边都是又向的 ...
最新文章
- HTTP/TCP/IP协议
- 向app store提交应用时,必须点“ready to upload binary”!
- servlet解决javascript传来中文乱码问题
- [Python图像处理] 二十八.OpenCV快速实现人脸检测及视频中的人脸
- python规模_python语言计算生态规模有多大?
- 随机生成1024个数,存入一段内存,用指针实现获取1024个数的最大数地址,最小数地址
- 【牛客 - 368B】选点(dfs序,LIS 或 dfs序 + 树状数组 + 离散化,树状数组求LIS的方法)
- Linux编程 文件操作,linux高级编程(文件操作)
- linux ip addr peer,CentOS 7 设置网络IP地址
- php怎么求最小公倍数,C++_详解C语言求两个数的最大公约数及最小公倍数的方法,求两个正整数的最大公约数nbs - phpStudy...
- 如何在.NET控制台应用程序中获取应用程序的路径?
- 自来水公司SCADA调度系统方案
- 基于Springboot+Vue实现前后端分离进销存管理系统
- word鼠标右下角有一个小方块_word
- Qt QLineedit 控件出发clicked信号问题
- killall: command not found
- 广西来宾中考计算机考试考什么,来宾中考信息管理系统 http://www.lbzklq.com
- python获取阿里巴巴国际站商家信息
- 计算机英语论文1000,1000字的英语论文范文大全
- 题目0063-射击比赛